应为给的容器中为先序遍历的值,所有将其遍历的同时进行二叉树的构建即可。二叉树的构建采用递归的方法,逆先序遍历
/**
-
Definition for a binary tree node.
-
struct TreeNode {
-
int val;
-
TreeNode *left;
-
TreeNode *right;
-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
-
};
/
class Solution {
public:
void creatree(TreeNode root,int val)
{
if(rootNULL)return;
if(root->leftNULL&&valval)
{
TreeNode* node=new TreeNode(val);
root->left=node;
}
else if(root->right==NULL&&val>root->val)
{
TreeNode* node=new TreeNode(val);
root->right=node;
}
if(val>root->val)
{
creatree(root->right,val);
}
else
{
creatree(root->left,val);
}
}TreeNode* bstFromPreorder(vector& preorder)
{
if(preorder.size()==0)return NULL;TreeNode* head=new TreeNode(preorder[0]); for(int i=1;i<preorder.size();i++) { creatree(head,preorder[i]); } return head;
}
};