重建二叉树
2016-03-16 23:51
369 查看
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1);
return root;
}
private TreeNode reConstructBinaryTree(int [] pre,int startPre,int endPre,int [] in,int startIn,int endIn) {
if(startPre>endPre||startIn>endIn)
return null;
TreeNode root=new TreeNode(pre[startPre]);
for(int i=startIn;i<=endIn;i++)
if(in[i]==pre[startPre]){
root.left=reConstructBinaryTree(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);
root.right=reConstructBinaryTree(pre,i-startIn+startPre+1,endPre,in,i+1,endIn);
}
return root;
}
}
相关文章推荐
- # LeetCode Merge k Sorted Lists
- C++实现红黑树与验证
- 离散数学Notes
- 简析递归
- 背包九讲问题
- 置换选择排序
- 数据结构与算法面试题
- 数据结构与算法 Data Structures and Algorithms(作业1)
- 8个排序算法
- 每天坚持Crack Code(Day 6)
- 单链表(c++)
- 每天坚持Crack Code(Day 5)
- 每天坚持Crack Code(Day 4)
- 每天坚持Crack Code(Day 3)
- 每天坚持Crack Code(Day 2)
- 每天坚持Crack Code(Day 1)
- 九度 Online Judge 之《剑指 Offer》一书相关题目解答
- 数据结构与算法—论证任意二叉树度数为2的节点的个数等于叶节点个数减1
- 查找
- 线性表举例之二:队列