LeetCode Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:cnki翻译助手软件下载 编辑:程序博客网 时间:2024/05/21 17:31
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
思路分析:这题类似于LeetCode Construct Binary Tree from Inorder and Postorder Traversal,可以参考这篇题解,主要考察递归。
AC Code
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { HashMap<Integer, Integer> inorderValueToIndexMap = new HashMap<Integer, Integer>(); for(int i = 0; i < inorder.length; i++){ inorderValueToIndexMap.put(inorder[i], i); } return buildTreeHelper(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1, inorderValueToIndexMap); } public TreeNode buildTreeHelper(int [] preorder, int ps, int pe, int[] inorder, int is, int ie, HashMap<Integer, Integer> inorderValueToIndexMap){ if(ps > pe || is > ie) return null; TreeNode root = new TreeNode(preorder[ps]); int indexOfRootInorder = inorderValueToIndexMap.get(root.val); int leftNum = indexOfRootInorder - is; int rightNum = ie - indexOfRootInorder; root.left = buildTreeHelper(preorder, ps + 1, ps + leftNum, inorder, indexOfRootInorder - leftNum, indexOfRootInorder -1, inorderValueToIndexMap); root.right = buildTreeHelper(preorder, ps + leftNum + 1, ps + leftNum + rightNum, inorder, indexOfRootInorder + 1, indexOfRootInorder + rightNum, inorderValueToIndexMap); 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
- hdu-2639-01背包变形之求第k优解-Bone Collector II
- chrome的编译和配置
- C#占位符
- MinGw以及临时加路径
- qss中类选择器.的重要性
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- 基于Quick-cocos2dx 2.2.3 的动态更新实现完整篇。(打包,服务器接口,模块自更新)
- BeanCreationException报错启动不起来(jar包冲突)
- Xcode6中删除LaunchScreen.xib,使用Images.xcassets来做工程的启动页
- 自定义滚动导航控件
- Android程序中如何执行shell脚本
- C语言及程序设计初步例程-19 字符数据及字符类型
- CUDA: Threading的Block和Grid的設定與 Warp
- 移动传感任务地图—实施计划