LeetCode题解:Construct Binary Tree from Inorder and Postorder Traversal
2015-10-02 20:35
465 查看
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
题解:通过中序遍历和后序遍历还原二叉树
解决思路:首先要明确一点,对于后序遍历的结果,如果一个元素所在的位置为i,若在中序遍历的i-1位置的元素为该元素的根结点,说明该元素就是所在子树的右儿子(且没有子树),否则存在右子树。左子树倒没什么特别的
代码:
Note:
You may assume that duplicates do not exist in the tree.
题解:通过中序遍历和后序遍历还原二叉树
解决思路:首先要明确一点,对于后序遍历的结果,如果一个元素所在的位置为i,若在中序遍历的i-1位置的元素为该元素的根结点,说明该元素就是所在子树的右儿子(且没有子树),否则存在右子树。左子树倒没什么特别的
代码:
public class Solution { private int inLen; private int postLen; public TreeNode buildTree(int[] inorder, int[] postorder) { inLen = inorder.length; postLen = postorder.length; return buildTree(inorder, postorder, null); } private TreeNode buildTree(int[] inorder, int[] postorder, TreeNode root){ if(postLen < 0){ return null; } TreeNode node = new TreeNode(postorder[postLen--]); if(inorder[postLen] != node.val){ node.right = buildTree(inorder, postorder, node); } inLen--; if((root == null) || inorder[inLen] != root.val){ node.left = buildTree(inorder, postorder, node); } return node; } }
相关文章推荐
- 将博客搬至CSDN
- 学习ThinkPHP3.2.2:了解并测试与3.1不同之处_自定义函数文件名称
- Unity 5 中的全局光照技术详解(建议收藏)
- 【J2EE系列】—Servlet
- HDU 2256 Problem of Precision(矩阵快速幂 数论 )
- Uva1398--Meteor(扫描线)
- Java 多维数组遍历详解
- LeetCode算法第8篇:234 Palindrome Linked List
- pat1014Waiting in Line (30)
- 学习ThinkPHP3.2.2(五):编辑记录
- 单例模板
- poj2386 Lake Counting
- Codeforces Round #322 (Div. 2)B. Luxurious Houses
- 由脱库攻击谈口令字段的加密策略——密码泄露事件杂谈之一
- Mustache
- BBS数据库设计文档
- Java设计模式之命令模式
- sunstudio 12.3 on solaris 10
- iOS:UIView、UIControl、UIButton、UILabel简单的属性和方法常识
- 轮廓线DP POJ3254 && BZOJ 1087