1008前序遍历构造一棵二叉树(如何去构造一棵二叉树)
通过这个题 我终于学会了怎么去构造一棵二叉搜索树首先核心的地方就是用l和r来划分这个区间我们知道二叉树的左边所有节点都比根节点小右边所有节点都比跟节点大。还有一个核心点是我不知道该让谁是根节点但是这个并不重要因为是前序遍历的数组所以让数组第一个元素是根节点即可然后找比根节点值大的元素即可。这就完成了范围的划分。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { TreeNode* way(vectorint preorder,int l,int r){ if(lr){ return NULL; } TreeNode *rootnew TreeNode(); root-valpreorder[l]; int i; for(il1;ir;i){ if(preorder[i]root-val){ break; } } root-leftway(preorder,l1,i-1); root-rightway(preorder,i,r); return root; } public: TreeNode* bstFromPreorder(vectorint preorder) { return way(preorder,0,preorder.size()-1); } };
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2424053.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!