根据左右划分子树进行建树;
具体代码:
class Solution {
public:
TreeNode* bstFromPreorder(vector& preorder) {
return buildTree(preorder, 0, preorder.size()-1);
}
TreeNode* buildTree(vector& preorder,int l,int r){
if(l>r)
return nullptr;
TreeNode* ph=new TreeNode(preorder[l]);
if(l==r)
return ph;
int end=r;
l++;
while(r>=l&&preorder[r]>ph->val){
r--;
}
ph->left=buildTree(preorder,l,r);
ph->right=buildTree(preorder, r+1, end);
return ph;
}
};



