【编程题】重建二叉树(Java实现)
2019-08-14 10:54
357 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40432108/article/details/99547577
【编程题】重建二叉树(Java实现)
题目来源
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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) { if(pre==null||in==null||pre.length!=in.length||pre.length<=0) return null; return reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1); } TreeNode reConstructBinaryTree(int[] pre,int preLow,int preHigh,int[] in,int inLow,int inHigh){ if(preLow>preHigh) return null; TreeNode root=new TreeNode(pre[preLow]); int i=inLow; for(;i<=inHigh;i++){ if(pre[preLow]==in[i]) break; } root.left=reConstructBinaryTree(pre,preLow+1,preLow+(i-inLow),in,inLow,i-1); root.right=reConstructBinaryTree(pre,preLow+(i-inLow)+1,preHigh,in,i+1,inHigh); return root; } }
相关文章推荐
- 剑指offer编程题Java实现——面试题6重建二叉树
- 《剑指offer》编程题java实现(二十六):重建二叉树(两种方法)
- 通过前序遍历和中序遍历重建二叉树以及输出后序遍历(Java实现)
- 剑指Offer:面试题6——重建二叉树(java实现)
- JAVA实现重建二叉树(《剑指offer》)
- 剑指offer----重建二叉树---java实现
- 重建二叉树java实现
- 剑指offer面试题6:重建二叉树(Java实现)
- JAVA实现重建二叉树(《剑指offer》)
- 《剑指offer》编程题java实现(二十八):二叉树的下一个节点
- 剑指offer面试题7:重建二叉树java实现
- java实现——006重建二叉树
- java实现重建二叉树
- 剑指offer--面试题6:重建二叉树--Java实现
- java实现重建二叉树
- 剑指offer|面试题6:重建二叉树(Java实现)
- 剑指offer-重建二叉树 java实现
- Java实现由前序序列和中序序列重建二叉树,并后序输出。
- 剑指offer 重建二叉树 java实现
- 剑指offer编程题python实现(第4题)重建二叉树