给定二叉树先序、中序遍历序列,求后序遍历
给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。
输入描述:
输入为一行。 两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔。保证数据合法
输出描述:
对应输出后序遍历序列
输入
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
给定二叉树先序、中序遍历序列,求后序遍历相关推荐
- 数据结构----二叉树已知先序和中序遍历序列求后序遍历
说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...
- 二叉树(前序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列、深度、叶子数)
Description 已知二叉树的一个按前序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树,并输出建立二叉树的前序遍历序列.中序遍历序列.后序遍历序列.层次遍历序列 ...
- C++实现已知二叉树前序遍历和中序遍历,求后序遍历
C++实现已知二叉树前序遍历和中序遍历,求后序遍历 一.基本概念 1.先序遍历(NLR)可以确定二叉树的父子结点: 2.中序遍历(LNR)可以确定二叉树的左右子树: 3.后序遍历(LRN)可以确定二叉 ...
- 【算法】【树】已知先序中序序列求后序序列(详细解释)
题目描述 如题所示,已知先序中序序列建树与求后序序列 算法原理 利用递归和分制的思想,找到当前树先序序列的根节点,然后找到对应中序序列的位置,然后根据根节点在中序序列中的位置来判断左右子树分别的位置, ...
- 二叉树知道前序和中序求后序,知道中序后序求中序
今天来总结下二叉树前序.中序.后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明. 首先,我们看 ...
- PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列
PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列 题目 输入格式 输出格式 输入样例 输出样例 代码 题目 已知二叉树层序+中序序列,求后序遍历序列. 输入格式 第一行给出该二叉树的节 ...
- 给定二叉树的先序遍历和中序遍历,求其后序遍历(先中定序)
题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: ...
- PAT甲级1020 Tree Traversals:[C++题解]树的遍历、由中序序列和后序序列递归建树
文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的后序遍历序列和中序遍历序列,让求层次遍历的序列. 分析: 后序遍历:先 左子树.右子树 ,最后再遍历根结点. 中序遍历:先左子树,再根 ...
- 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...
- 【C++】已知二叉树先序遍历+中序遍历 求后序遍历
题目:已知二叉树先序遍历+中序遍历 求后序遍历 对于一棵二叉树,给定其先序遍历的结果序列和中序遍历的结果序列,请写出其后序遍历的结果序列. 输入样例: GDAFEMHZ(先序遍历的结果序列) ADEF ...
最新文章
- 关于大型网站技术演进的思考(四)-存储的瓶颈4
- 微软熊辰炎:如何利用图神经网络解决半结构化数据问题?
- mybatis映射器${}和#{}的区别
- 用VS Express 2010开发第一个应用程序
- 长度最小的子数组--滑动窗口
- android 通知_Android 全局消息通知框架实现(类似EventBus)
- 原生JS事件中,return false 和 preventDefault() 的区别
- EEGLAB在MATLAB中的下载、安装教程
- 使用burp对Tomcat 弱密码爆破
- android 悬浮窗截屏,GitHub - tyhjh/ScreenShot: Android截屏的封装
- 文件夹批量重命名编号的快速方法
- 龙兵智能名片多企业小程序V2.3.3-开源版
- Windows设置默认打印机
- 我们都希望有一部属于自己的电脑。
- Python中Numpy中省略号的作用
- VUE系列之element表单el-form-item自定义label
- 【SAS应用统计分析】软件的基本操及SAS数据集的整理
- Activiti的基本使用
- 前端10个灵魂拷问 吃透这些你就能摆脱初级前端工程师!
- Android微信小尾巴,朋友圈自带小尾巴,微信这个新技能简直太太太强大了!