Construct Binary Tree from Preorder and Inorder Traversal ---LeetCode
来源:互联网 发布:淘宝鞋店推荐 编辑:程序博客网 时间:2024/06/04 19:54
https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
解题思路:
由于先序遍历(DLR)可以知道根节点的位置,而中序遍历(LDR)可以知道左子树右子树的位置,就可以用递归来实现。记住并理解递归的参数。
举个例子:
preorder: [7, 10, 4, 3, 1, 2, 8, 11]
inorder: [4, 10, 3, 1, 7, 11, 8, 2]
示意图:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if (preorder == null || inorder == null) return null; HashMap<Integer, Integer> map = new HashMap<>(); for (int i=0; i<inorder.length; i++) map.put(inorder[i], i); return helper(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1, map); } public TreeNode helper(int[] preorder, int preL, int preR, int[] inorder, int inL, int inR, HashMap<Integer, Integer> map) { if (preL > preR || inL > inR) return null; TreeNode root = new TreeNode(preorder[preL]); int index = map.get(root.val); root.left = helper(preorder, preL + 1, index - inL + preL, inorder, inL, index - 1, map); root.right = helper(preorder, index - inL + preL + 1, preR, inorder, index + 1, inR, map); return root; }}
0 0
- *(leetcode) Construct Binary Tree from Preorder and Inorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode][tree] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode: Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode: Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- leetcode 109: Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode-Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode - Construct Binary Tree from Preorder and Inorder Traversal
- [leetCode] Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal
- 设置Sublime Text新标签页打开文件
- 【JavaScript】表单效验
- mysql创建外键原则
- 使用SimpleDateFormat需要注意的地方
- PHP设置会话(Session)超时过期时间实现登录时间限制
- Construct Binary Tree from Preorder and Inorder Traversal ---LeetCode
- 近百android程序源码贡献
- CodeForces 450D - Jzzhu and Cities (dij + heap )
- 适配器模式
- Spark SQL 简单使用
- HBase开发SQL查询中间件之查询原理
- sql高性能触发器
- CSDN, cnblog, iteye和51cto四个博客网站的比较与分析
- 利用nginx向现有网站添加登录验证功能(不添加修改现有网站代码)