optimize for recover BST