Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:ubuntu 设置mac 编辑:程序博客网 时间:2024/05/17 06:09
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
s思路:
1. 理论上给定三种遍历的顺序就可以构造树本身,还是挺有趣的!
2. 给定inoder和preorder,我们每次从preorder取第一个数一定是root了,然后去inorder找到这个数,这样inorder中这个数左侧就是左子树,右侧就是右子树。即:利用preorder去找根节点,利用这个根节点去inorder找左右子树对应的sub vector,这样就可以recursive的构造树了。
3. 问题是,每次去inorder中找根节点,如果是从左往右,就很费事。可以用map来做
//方法1:recursive: 对每个subarray用left,right来限定其范围。所以,需要两组left/right分别对preorder和inorder来限定范围。class Solution {public: TreeNode* helper(vector<int>& preorder, unordered_map<int,int>&mm,int preleft,int preright,int inleft,int inright){ // if(preleft>preright) return NULL; TreeNode* cur=new TreeNode(preorder[preleft]); int mid=mm[preorder[preleft]]; cur->left=helper(preorder,mm,preleft+1,preleft+mid-inleft,inleft,mid-1); cur->right=helper(preorder,mm,preleft+mid-inleft+1,preright,mid+1,inright); return cur; } TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { // unordered_map<int,int> mm; for(int i=0;i<inorder.size();i++) mm[inorder[i]]=i; return helper(preorder,mm,0,inorder.size()-1,0,inorder.size()-1); }};
0 0
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode --- 105. Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] 105.Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 105. Construct Binary Tree from Preorder and Inorder Traversal LeetCode
- LeetCode#105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode *** 105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode-105.Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode - 105. Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal
- 最新OCR文字识别软件如何提高OCR性能
- Echarts 通过时间轴timeline改变xAxis.data数据进行不合并处理
- 读《UML基础、案例与应用》有感
- 设置头像圆角的三种方式
- 人工智能、机器学习和深度学习三者的关系与应用
- Leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal
- Python格式化输出
- 分区表
- 9.2 SO_REUSEADDR配置 & TCP_NODELAY
- LeetCode112. Path Sum java solution
- Leetcode 106. Construct Binary Tree from Inorder and Postorder Traversal
- Hibernate 中的 openSession和getCurrentSession 方法的区别
- Json_JackSon_lesson1 Jackson的 序列化与反序列化
- XP下软件崩溃,adplus抓取Dump方法