【JZOF】已知前序遍历和中序遍历,求出其后序遍历
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如:前序遍历序列{ 1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8,6},打印出它的后序遍历
public class BinaryTree {public static final class BinaryTreeNode{int value;BinaryTreeNode left;BinaryTreeNode right;}public static BinaryTreeNode construct(int[] priorTree,int[] innerTree){if (priorTree==null||innerTree==null||innerTree.length<1||priorTree.length<1){return null;}return construct(priorTree,0,priorTree.length-1,innerTree,0,innerTree.length-1);}private static BinaryTreeNode construct(int[] priorTree, int ps, int pe, int[] innerTree, int is, int ie) {if (ps>pe){return null;}int value=priorTree[ps];int index=is;//找出中序遍历的根节点的位置,其左边的排列都是其左子树,右边是root的右子树while(index<=ie){if (innerTree[index]==value) {break;}else {index++;}}BinaryTreeNode root=new BinaryTreeNode();root.value=value;root.left=construct(priorTree,ps,ps+index-is,innerTree,0,index-1);root.right=construct(priorTree,ps+index-is+1,pe,innerTree,index+1,ie);return root;}//打印后序遍历public static void paint(BinaryTreeNode root){while (root!=null){paint(root.left);paint(root.right);System.out.println(root.value);}}
}
复制代码
【JZOF】已知前序遍历和中序遍历,求出其后序遍历相关推荐
- 二叉树的建立(已知前序序列和中序序列)
已知二叉树前序序列和中序序列递归创建二叉树 #include<bits/stdc++.h> using namespace std; typedef struct Node{char da ...
- [算法] 已知前序和中序遍历,建立二叉树
结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和中序遍历顺序,建立二叉树 问题 ...
- 二叉树已知前序遍历、中序遍历画出二叉树的形状
前序遍历: 前序遍历(VLR)是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根 ...
- 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)
1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...
- [算法] 已知前序和后序遍历,建立二叉树
结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和后序遍历,建立二叉树(不唯一, ...
- 已知前序中序输出后序(java)返回值是数组
例子: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 后序:3, 4, 2, 6, 5, 1(左右根) 1.先说根据前序中序求后序,前序总是沿着根 ...
- 已知前序(先序)与中序输出后序
已知前序(先序)与中序输出后序: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 分析:因为前序(根左右)最先出现的总是根结点,所以令root为前序 ...
- POJ 2255 Tree Recovery(已知前序中序,求后序)
1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...
- [java]已知文件 source.txt 中的内容如下,其中,username、yonghu 都表示用户名,password、mima都表示密码,level、dengji都表示等级
已知文件 source.txt 中的内容如下 username=root , password= 1234, id=1, level= 10 username= adimin, mima= 1234 ...
最新文章
- uboot和linux内核移植,Uboot与kernel移植总结
- java字符串转日期_JAVA字符串转日期或日期转字符串
- JS面向对象(二)——构造函数的继承
- get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
- mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
- 毕业典礼留学生代表发言:中国是我可亲可敬可爱的第二故乡,我已修炼出一颗中国心!...
- mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)
- 耳目一新!令人膜拜的牛人简历!厉害的攻城师啊
- 信息学奥赛C++语言:满足条件的数累加
- 鸿蒙系统无限延期,鸿蒙系统下月到来,三款手机首批升级,华为P50系列延期发布!...
- 国庆海报没有灵感,给你设计要点素材!
- hive启动报错 java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7B
- 在O(1)的时间内删除链表节点
- dll中封装MFC(VC2012)资源--自定义一个复用的登录界面
- 分兵策略应对高速发展
- java + concat_Java中concat()方法和加号(+)运算符之间的区别
- Win11怎么打开网络发现?Win11启用网络发现教程
- Tek TDS3054B保存波形的方法
- 总结 62 种在深度学习中的数据增强方式
- 【小y设计】二维码条形码打印编辑器