这道题目虽然很简单,但是参考别人的代码才做出来。
二叉树递归的题目做的还不够多,所以不够熟悉,以后应该多看一下这种类型的题目,多理解一下。
思路:
自己重新再写一个函数,传入一个树节点的指针的引用和一个整数值,根据这个整数值的大小构建二叉树,递归调用这个函数。
/**
* 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 buildtree(TreeNode* &root,int val)
{
if(!root)
{
root=new TreeNode(val);
return;
}
if(val<root->val)
{
buildtree(root->left,val);
return;
}
else
{
buildtree(root->right,val);
return;
}
}
TreeNode* bstFromPreorder(vector<int>& preorder) {
TreeNode* root=NULL;
for(auto c:preorder)
{
buildtree(root,c);
}
return root;
}
};