已知二叉树前序中序,求后序代码实现
思路:
平时做笔试题目时,都是先拿前序的首字母,去和中序的字母比较,然后把中序的分成两段,不停的遍历,直到长度等于一(即叶子节点)。
例题
二叉树是一种常用的数据结构。我们可以用大写的英文字母表示二叉树的节点。
如下:
B / \ / \ C A\\D
对于二叉树,有前序、中序和后序三种遍历方式。 现在给你一棵二叉树的前序和中序遍历,请你求出这棵二叉树的后序遍历结果。
Input
输入数据有多组,每组数据一行。
每行由两个字符串组成(每个字符串长度最大为26)。表示一棵二叉树的前序和中序遍历结果。
题目保证前序和中序遍历是合法的(即肯定可以确定一棵二叉树)。
Output
对于每组输入,输出对应的二叉树的后序遍历结果。
注意:本题输入输出都在控制台中,使用标准输入输出函数即可,不需要读写文件。
Sample Input
BCAD CBAD
ABDGKLRVWSXCEHMNFIOTUJPYQZ KGVRWLSXDBAMHNECTOUIFPYJZQ
Sample Output
CDAB
KVWRXSLGDBMNHETUOIYPZQJFCA
代码
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
char a[30],b[30];
void fun(int a_l,int a_r,int b_l,int b_r){for(int j=b_l;j<=b_r;j++){if(a[a_l]==b[j]){fun(a_l+1,a_l+j-b_l,b_l,j-1);//左子树fun(a_l+j-b_l+1,a_r,j+1,b_r);//遍历右子树printf("%c",b[j]);//输出根节点break;}}
}
int main()
{while(scanf("%s%s",a,b)!=EOF){int len=strlen(a);fun(0,len-1,0,len-1);printf("\n");}return 0;
}
已知二叉树前序中序,求后序代码实现相关推荐
- 二叉树已知前序中序求后序(超简单)(java)
首先解题思路来自b站某高手,思路清奇,请看官先看视频: 无脑秒解!已知先/后序遍历与中序遍历,求后/先序遍历._哔哩哔哩_bilibili大佬轻喷,这个题做很简单,但是想做的快做的准应该没有比这更快的 ...
- 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)
二叉树的遍历(前序.中序.后序.已知前中序求后序.已知中后序求前序) 之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进 ...
- C++实现已知二叉树前序遍历和中序遍历,求后序遍历
C++实现已知二叉树前序遍历和中序遍历,求后序遍历 一.基本概念 1.先序遍历(NLR)可以确定二叉树的父子结点: 2.中序遍历(LNR)可以确定二叉树的左右子树: 3.后序遍历(LRN)可以确定二叉 ...
- PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列
PAT甲级1020变体:已知二叉树层序+中序序列,求后序遍历序列 题目 输入格式 输出格式 输入样例 输出样例 代码 题目 已知二叉树层序+中序序列,求后序遍历序列. 输入格式 第一行给出该二叉树的节 ...
- 二叉树:已知先序和中序求后序,已知中序和后序求先序
树的三种遍历方式的遍历顺序: 先序遍历:根.左子树.右子树(特点:第一个元素为根) 中序遍历:左子树.根.右子树(特点:根的两边分别为左子树和右子树) 后序遍历:左子树.右子树.根(特点:最后一个元素 ...
- 二叉树知道前序和中序求后序,知道中序后序求中序
今天来总结下二叉树前序.中序.后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明. 首先,我们看 ...
- 二叉树面试题:前中序求后序、中后序求前序
在面试时,避免不了的会遇到一些数据结构的面试题,今天我们就来了解一下二叉树的经典面试题: 已知二叉树的前序遍历顺序为ABDCEGHF,中序遍历顺序为DBAGEHCF,求该二叉树的后序遍历. 还有: 已 ...
- 根据先序和中序求后序,注意递归终止条件
#include "stdafx.h" #include <iostream> #include <string> using namespace std; ...
- 已知二叉树:先序和中序求后序/后序和中序求先序
P1030 [NOIP2001 普及组] 求先序排列 # [NOIP2001 普及组] 求先序排列 ## 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示, ...
最新文章
- 我看过的C++方面的好文章
- python少儿编程 在线课程-宁波Python程序开发课程
- Android的消息处理机制——Looper,Handler和Message浅析
- android volley http请求框架
- optparse接受带空格的参数值时,需要加双引号
- 二分查找 寻找指定数 python 实现
- POJ - 3080 Blue Jeans(暴力+KMP)
- Spring原理之代理与动态代理模式总结(四)
- 拥抱开源!除了微软红帽,这些国际大厂你认识几个?
- 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始
- c 自定义实现string类 clear_CC++语言15|类的继承和派生实现代码重用、扩充
- 使用 NetDataContractSerializer 共享类型
- jdi屏幕斜纹_荣耀V10屏幕有斜纹问题,有人甚至因此退货,真的这么严重?
- AD域控制器所有使用的端口明细列表
- Git提交时提示“Please make sure you have the correct access rights and the repository exists.”的解决方法
- node-red 可视化_可视化和注意-第4部分
- android qq群加群代码,QQ群一键强制加群API源代码
- cad.net 块裁剪边界反向修剪
- 手机与个人计算机区别,手机CPU跟电脑CPU有什么差别?两者差距到底有多大?
- 基于TensorFlow Encrypted (TFE)的隐私计算benchmark