剑指Offer(四)重建二叉树
2017-12-22 21:09
393 查看
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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) { return build(pre, in, 0, pre.length-1, 0, in.length-1); } public TreeNode build(int[] pre, int[] in, int pstart, int pend, int istart, int iend){ if(pstart > pend) return null; int cur = pre[pstart];//二叉树的根节点 int find = istart;//游标 while(find <= iend){//在中序遍历序列中寻找根节点 if(cur == in[find]) break; else find++; } int len = find-istart;//子树高度 TreeNode res = new TreeNode(cur);//创建子树根节点 res.left = build(pre, in, pstart+1, pstart+len, istart, find-1);//创建左子树 res.right = build(pre, in, pstart+len+1, pend, find+1, iend);//创建右子树 return res; } }
相关文章推荐
- 剑指Offer-【面试题06:重建二叉树】
- 剑指offer---面试题6重建二叉树
- 《剑指offer》---从尾到头打印链表 和 重建二叉树
- 重建二叉树-剑指offer
- 剑指Offer_06 根据前序遍历和中序遍历序列 重建二叉树
- 剑指offer第四题重建二叉树
- (剑指offer笔记)根据前序遍历和后序遍历重建二叉树
- 剑指offer面试题7:重建二叉树 Java代码实现
- 《剑指Offer》读书笔记---面试题6:重建二叉树
- 剑指Offer——重建二叉树——C++
- 牛客网刷题——重建二叉树(剑指offer)
- 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)
- 剑指Offer面试题6重建二叉树(根据前序中序输出后序)
- (php实现剑指offer)重建二叉树
- 《剑指offer》牛客网java题解-重建二叉树
- 《剑指Offer》读书笔记04:重建二叉树
- 《剑指Offer》面试题六之重建二叉树
- 剑指Offer编程练习__重建二叉树
- 剑指offer 二叉树重建
- 剑指Offer面试题:5.重建二叉树