给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。

输入描述:
输入为一行。
两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔。保证数据合法
输出描述:
对应输出后序遍历序列
示例1

输入

ABDEC DBEAC

输出

DEBCA思路:先根据先序、中序序列建立二叉树,然后后序遍历
import java.util.Scanner;import javax.print.attribute.standard.PresentationDirection;class TreeNode {char val;TreeNode left;TreeNode right;TreeNode(char x) { val = x; }}public class Main {public static  String preStr;public static String midStr;public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);String s = sc.nextLine();int pos = s.indexOf(" ");preStr = s.substring(0,pos);midStr = s.substring(pos+1,s.length());//System.out.println("pre:"+preStr);//System.out.println("midS:"+midStr);TreeNode rs = creat(preStr,0,preStr.length()-1,midStr,0,midStr.length()-1);rView(rs);}public static void rView(TreeNode root){if(root!=null){rView(root.left);rView(root.right);System.out.print(root.val);}}public static TreeNode creat(String preStr,int pstart,int pend,String midStr,int mstart,int mend){if(mstart>mend||pstart>pend) return null;char[] cmidStr= midStr.toCharArray();char[] cpreStr=preStr.toCharArray();TreeNode root = new TreeNode(cpreStr[pstart]);for(int i = mstart;i<=mend;i++)if(cmidStr[i]==cpreStr[pstart]){int len = i-mstart;root.left = creat(preStr,pstart+1,pstart+len,midStr,mstart,i-1);root.right = creat(preStr,pstart+len+1,pend,midStr,i+1,mend);}return root;   }}

转载于:https://www.cnblogs.com/Keven02/p/7456834.html

给定二叉树先序、中序遍历序列,求后序遍历相关推荐

  1. 数据结构----二叉树已知先序和中序遍历序列求后序遍历

    说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...

  2. 二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)

    Description 已知二叉树的一个按前序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树,并输出建立二叉树的前序遍历序列.中序遍历序列.后序遍历序列.层次遍历序列 ...

  3. C++实现已知二叉树前序遍历和中序遍历,求后序遍历

    C++实现已知二叉树前序遍历和中序遍历,求后序遍历 一.基本概念 1.先序遍历(NLR)可以确定二叉树的父子结点: 2.中序遍历(LNR)可以确定二叉树的左右子树: 3.后序遍历(LRN)可以确定二叉 ...

  4. 【算法】【树】已知先序中序序列求后序序列(详细解释)

    题目描述 如题所示,已知先序中序序列建树与求后序序列 算法原理 利用递归和分制的思想,找到当前树先序序列的根节点,然后找到对应中序序列的位置,然后根据根节点在中序序列中的位置来判断左右子树分别的位置, ...

  5. 二叉树知道前序和中序求后序,知道中序后序求中序

    今天来总结下二叉树前序.中序.后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明. 首先,我们看 ...

  6. PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列

    PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列 题目 输入格式 输出格式 输入样例 输出样例 代码 题目 已知二叉树层序+中序序列,求后序遍历序列. 输入格式 第一行给出该二叉树的节 ...

  7. 给定二叉树的先序遍历和中序遍历,求其后序遍历(先中定序)

    题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: ...

  8. PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树

    文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的后序遍历序列和中序遍历序列,让求层次遍历的序列. 分析: 后序遍历:先 左子树.右子树 ,最后再遍历根结点. 中序遍历:先左子树,再根 ...

  9. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  10. 【C++】已知二叉树先序遍历+中序遍历 求后序遍历

    题目:已知二叉树先序遍历+中序遍历 求后序遍历 对于一棵二叉树,给定其先序遍历的结果序列和中序遍历的结果序列,请写出其后序遍历的结果序列. 输入样例: GDAFEMHZ(先序遍历的结果序列) ADEF ...

最新文章

  1. 关于大型网站技术演进的思考(四)-存储的瓶颈4
  2. 微软熊辰炎:如何利用图神经网络解决半结构化数据问题?
  3. mybatis映射器${}和#{}的区别
  4. 用VS Express 2010开发第一个应用程序
  5. 长度最小的子数组--滑动窗口
  6. android 通知_Android 全局消息通知框架实现(类似EventBus)
  7. 原生JS事件中,return false 和 preventDefault() 的区别
  8. EEGLAB在MATLAB中的下载、安装教程
  9. 使用burp对Tomcat 弱密码爆破
  10. android 悬浮窗截屏,GitHub - tyhjh/ScreenShot: Android截屏的封装
  11. 文件夹批量重命名编号的快速方法
  12. 龙兵智能名片多企业小程序V2.3.3-开源版
  13. Windows设置默认打印机
  14. 我们都希望有一部属于自己的电脑。
  15. Python中Numpy中省略号的作用
  16. VUE系列之element表单el-form-item自定义label
  17. 【SAS应用统计分析】软件的基本操及SAS数据集的整理
  18. Activiti的基本使用
  19. 前端10个灵魂拷问 吃透这些你就能摆脱初级前端工程师!
  20. Android微信小尾巴,朋友圈自带小尾巴,微信这个新技能简直太太太强大了!

热门文章

  1. SpringMVC源码解析 - HandlerAdapter - HandlerMethodArgumentResolver
  2. CSDN并购博客园遐想
  3. [深入浅出Cocoa]详解键值观察(KVO)及其实现机理
  4. 一个苏州IT人的5年挨踢经历-------面试篇(之三)
  5. 读微型计算机原理与接口技术 段的理解
  6. 生活问题 | 对华为畅玩手机5X进行升级
  7. Java 方法重载 方法重写
  8. 企业 SpringBoot 教程 (七)springboot开启声明式事务
  9. wPaint在线绘图插件
  10. Ubuntu中设置防火墙的开启与关闭