已知二叉树前序,中序遍历,求后序遍历,java实现
来源:互联网 发布:淘宝ifashion怎么进入 编辑:程序博客网 时间:2024/06/10 03:43
简单介绍一下思想,先看前序,前序遍历的第一个节点,就是该树的根。在中序中找到该根的位置,设为index,在中序遍历集合中,位于index之前的属于根的左子树,位于index之后的属于根的右子树。然后,对左右子数,遍历的调用该过程,就能将树结构还原。之后后序遍历也就不是问题了。
public class M {public static class Tree{public int value;public Tree left;public Tree right;public Tree(int value) {this.value=value;}}public static void main(String[] args){int[]preOrder={1,2,4,5,3,6,7};int[]midOrder={4,2,5,1,6,3,7};getBehindOrder(preOrder, midOrder);}public static void getBehindOrder(int[]pre,int[]mid){if (pre==null||mid==null||pre.length!=mid.length) {return;}Tree root=buildTree(pre, mid);behindOrder(root);}public static void behindOrder(Tree root){//后序遍历二叉树if (root==null) {return;}if (root.left!=null) {behindOrder(root.left);}if (root.right!=null) {behindOrder(root.right);}System.out.print(root.value+" ");}public static Tree buildTree(int[]preOrder,int[]midOrder){//根据前序和中序,建立二叉树int value=preOrder[0];int length=preOrder.length;Tree root=new Tree(value);root.left=root.right=null;if (preOrder.length==1) {return root;}int index=0;while(midOrder[index]!=value)index++;//此处还要考虑index==length-1的情况if (index>0) {//中序中,根节点左边的节点都属于左子树int[]leftSubPreOrder=new int[index];for(int i=0;i<leftSubPreOrder.length;i++){leftSubPreOrder[i]=preOrder[i+1];}int[]leftSubMidOrder=new int[index];for(int i=0;i<leftSubMidOrder.length;i++){leftSubMidOrder[i]=midOrder[i];}root.left=buildTree(leftSubPreOrder, leftSubMidOrder);}if(length-index-1>0){int[]rightSubMidOrder=new int[length-index-1];for(int i=0;i<rightSubMidOrder.length;i++){rightSubMidOrder[i]=midOrder[i+index+1];}int[]rightSubPreOrder=new int[length-index-1];for(int i=0;i<rightSubPreOrder.length;i++){rightSubPreOrder[i]=preOrder[i+index+1];}root.right=buildTree(rightSubPreOrder, rightSubMidOrder);}return root;}}
0 0
- 已知二叉树前序,中序遍历,求后序遍历,java实现
- java实现二叉树已知先序遍历和中序遍历求后序遍历
- 已知二叉树先序遍历中序遍历求后序遍历
- 二叉树遍历,已知前序遍历与中序遍历,求后续遍历 使用java(递归方式)实现
- 【树】已知二叉树前序和中序遍历求后序遍历,及中序和后序遍历求前序遍历
- POJ 2255 二叉树遍历 已知前序遍历 中序遍历 求后序遍历
- 已知二叉树后序遍历和中序遍历,求前序遍历
- 3.14(c程序实现)已知二叉树的前序遍历和中序遍历,求后序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历(二叉树)
- 二叉树系列:已知二叉树的中序遍历和前序遍历,求后序遍历
- 已知先序遍历和中序遍历求后序遍历——二叉树
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的中序遍历和前序遍历,如何求后序遍历
- 已知二叉树的前序遍历和中序遍历求后序遍历
- 二叉树已知前序遍历和中序遍历,编程求后序遍历。
- 已知二叉树的前序遍历中序遍历,求后序遍历
- 已知先序遍历和中序遍历求后序遍历——二叉树
- 已知二叉树的先序遍历和中序遍历,如何求后序遍历
- 快速幂
- poj1995(裸快速幂模板题)
- Java学生信息管理系统及支持用户名登录
- LightOJ
- spring boot实战(第一篇)第一个案例
- 已知二叉树前序,中序遍历,求后序遍历,java实现
- 人脸识别之人脸检测(一)--综述
- Spark任务执行流程解析
- Java学习笔记-接口2
- HDU 1008 Elevator
- 【通信方式一】管道
- 面向对象程序设计基础总结
- 1006. Sign In and Sign Out (25)
- poj-2754-八皇后-C语言-递归求解(2)