[leedcode 106] Construct Binary Tree from Inorder and Postorder Traversal
2015-07-21 21:39
483 查看
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
Note:
You may assume that duplicates do not exist in the tree.
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { /* 注释见上一题:已知前序和中序,求树 关键点: 1 定位每层的根节点 2 计算好offset*/ public TreeNode buildTree(int[] inorder, int[] postorder) { if(inorder.length!=postorder.length||inorder.length==0) return null; return getNode(inorder,0,inorder.length-1,postorder,0,postorder.length-1); } TreeNode getNode(int[] inorder,int left1,int right1,int[] postorder,int left2,int right2){ if(left1>right1) return null; if(left2>right2) return null; int temp=postorder[right2]; int index=left1; for(;index<=right1;index++){ if(inorder[index]==temp)break; } int len=index-left1; TreeNode node=new TreeNode(temp); node.left=getNode(inorder,left1,index-1,postorder,left2,left2+len-1); node.right=getNode(inorder,index+1,right1,postorder,left2+len,right2-1); return node; } }
相关文章推荐
- iOS 获取手机 唯一标识
- 软件开发培训日记7_21
- Appium 环境安装 MAC,ruby版
- 代码签名探析
- unicode下各种类型转换,CString,string,char*,int,char[]
- 如何迅速匹配兄弟字符串
- 选iphone5可以正常编译运行 , 但是5s和6和6s都会编译报错
- c017--c语言文件操作
- Basic Caculator
- Sizeof与Strlen的区别与联系(转)
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转
- .Net GC的工作机制 垃圾回收机制的工作原理
- 求一棵无根树的不同子树个数
- vim删除命令
- 7.21日志
- 顺序表3中删除元素的方式(你造吗)
- 两篇文章帮你入门Django(下)
- 快速排序
- Control.Invoke和Control.BeginInvoke细述
- android实现 服务器功能