Construct Binary Search Tree from Preorder Traversal

Return the root node of a binary search tree that matches the given preorder traversal.
Below solution is O(n) time complex,amazing idea.

int i=0;
    TreeNode* bstFromPreorder(vector<int>& preorder) {
        return dfs(0,100,preorder);
    }
    TreeNode* dfs(int lo,int hi,vector<int>& preorder){
        if((preorder.size()==i)||preorder[i]<lo||preorder[i]>hi)//注意判断的顺序
            return nullptr;
        TreeNode* root = new TreeNode(preorder[i++]);
        root->left = dfs(lo,root->val,preorder);
        root->right = dfs(root->val,hi,preorder);
        return root;
    }

猜你喜欢

转载自blog.csdn.net/Csdn_jey/article/details/88377547