题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如:前序遍历序列{ 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】已知前序遍历和中序遍历,求出其后序遍历相关推荐

  1. 二叉树的建立(已知前序序列和中序序列)

    已知二叉树前序序列和中序序列递归创建二叉树 #include<bits/stdc++.h> using namespace std; typedef struct Node{char da ...

  2. [算法] 已知前序和中序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和中序遍历顺序,建立二叉树 问题 ...

  3. 二叉树已知前序遍历、中序遍历画出二叉树的形状

    前序遍历: 前序遍历(VLR)是二叉树遍历的一种,也叫做先根遍历.先序遍历.前序周游,可记做根左右.前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根 ...

  4. 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)

    1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...

  5. [算法] 已知前序和后序遍历,建立二叉树

    结点结构 typedef struct Node{char data;struct Node *left;struct Node *right; }Node; 已知前序和后序遍历,建立二叉树(不唯一, ...

  6. 已知前序中序输出后序(java)返回值是数组

    例子: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 后序:3, 4, 2, 6, 5, 1(左右根) 1.先说根据前序中序求后序,前序总是沿着根 ...

  7. 已知前序(先序)与中序输出后序

    已知前序(先序)与中序输出后序: 前序:1, 2, 3, 4, 5, 6(根左右) 中序:3, 2, 4, 1, 6, 5(左根右) 分析:因为前序(根左右)最先出现的总是根结点,所以令root为前序 ...

  8. POJ 2255 Tree Recovery(已知前序中序,求后序)

    1. 题目链接:http://poj.org/problem?id=2255 2. 题目大意: 给定二叉树的前序和中序序列,输出其后序序列 3. 思考过程: 4. AC代码 /*** @descrip ...

  9. [java]已知文件 source.txt 中的内容如下,其中,username、yonghu 都表示用户名,password、mima都表示密码,level、dengji都表示等级

    已知文件 source.txt 中的内容如下 username=root , password= 1234, id=1, level= 10 username= adimin, mima= 1234 ...

最新文章

  1. uboot和linux内核移植,Uboot与kernel移植总结
  2. java字符串转日期_JAVA字符串转日期或日期转字符串
  3. JS面向对象(二)——构造函数的继承
  4. get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
  5. mysql的代码需要保存吗_php向Mysql数据库保存数据的代码
  6. 毕业典礼留学生代表发言:中国是我可亲可敬可爱的第二故乡,我已修炼出一颗中国心!...
  7. mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)
  8. 耳目一新!令人膜拜的牛人简历!厉害的攻城师啊
  9. 信息学奥赛C++语言:满足条件的数累加
  10. 鸿蒙系统无限延期,鸿蒙系统下月到来,三款手机首批升级,华为P50系列延期发布!...
  11. 国庆海报没有灵感,给你设计要点素材!
  12. hive启动报错 java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7B
  13. 在O(1)的时间内删除链表节点
  14. dll中封装MFC(VC2012)资源--自定义一个复用的登录界面
  15. 分兵策略应对高速发展
  16. java + concat_Java中concat()方法和加号(+)运算符之间的区别
  17. Win11怎么打开网络发现?Win11启用网络发现教程
  18. Tek TDS3054B保存波形的方法
  19. 总结 62 种在深度学习中的数据增强方式
  20. 【小y设计】二维码条形码打印编辑器

热门文章

  1. MyBatis 一级缓存二级缓存详解
  2. 并发 --- 32 管道 事件 信号量 进程池
  3. JavaScript错误信息
  4. android开发学习 ------- json数据与实体类之间的相互转换
  5. [原创]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
  6. Linux命令之cut详解
  7. oracle启动限制模式
  8. 何以笙箫默,一部有剧情的创意广告集?
  9. MySQ 错误 Got error 28 from storage engine
  10. 桌面云计算: 提供灵活、可靠双保险