二叉树 ---- 前序 中序 后序 知二求一

先说一下什么是二叉树的前中后序;
根:根节点 左代表遍历左子树 右代表遍历右子树
前序:根—左---右
中序:左—根---右
后序:左—右---根

如图求前序:
//叶子结点简单的说就是没有儿子的节点;

先遍历到a节点,再遍历它的左子树;

遍历到b节点,再遍历它的左子树;

遍历到c节点,发现c节点为叶子结点,返回到它的根节点b; 遍历b节点的右子树;

遍历到d节点,发现d节点为叶子结点,返回到节点a;遍历a节点的右子树;

遍历到e节点,再遍历它的左子树;发现它没有左子树,遍历它的右子树;

遍历到f节点,发现f节点为叶子结点,遍历结束;

中序后序自己动手推一下
前序: a b c d e f
中序: c b d a e f
后序: c d b f e a

还有前序和后序推出来的中序不唯一;

这里还有一些练习
知道前序中序求后序
答案:

#include<bits/stdc++.h>
using namespace std;
string z;//中序
string q;//前序
void dfs(int l1,int r1,int l2,int r2) {//l1 r1 为中序,l2 r2 为前序if(l1 > r1 || l2 > r2) return ;for(int i = l1;i <= r1;i++) {if(z[i] == q[l2]) {dfs(l1,i - 1,l2 + 1,l2 + i - l1);//遍历左子树,i - l1 是左子树的节点数dfs(i + 1,r1,l2 + i - l1 + 1,r2);//遍历右子树cout << q[l2];//因为是左右根的顺序 最后输出的就是根节点}}
}
int main() {cin >> z;cin >> q;int len = q.size() - 1;dfs(0,len,0,len);return 0;
}

知道中序后序求前序

#include<bits/stdc++.h>
using namespace std;
string z;
string h;
void dfs(int l1,int r1,int l2,int r2) {if(l1 > r1 || l2 > r2) return ;for(int i = l1;i <= r1;i++) {if(z[i] == h[r2]) {cout << h[r2];dfs(l1,i - 1,l2,l2 + i - l1 - 1);dfs(i + 1,r1,l2 + i - l1,r2 - 1);}}
}
int main() {cin >> z;cin >> h;int len = h.size() - 1;dfs(0,len,0,len);return 0;
}

二叉树 ---- 前序 中序 后序 知二求一相关推荐

  1. 二叉树前序遍历,后序遍历

    求前序遍历 Description 给出一棵二叉树的中序和后序遍历,求它的前序遍历.(树结点用不同的大写字母表示,长度小于等于26.) Input 本问题有多组测试数据,每组测试数据有两行,每行都是由 ...

  2. 二叉树前序遍历与后序遍历

    二叉树 前序遍历 递归 借助栈进行排序 先将根节点压栈 栈不为空,如果存在根节点,先右后左. 弹栈打印.直至栈为空 package com.vitamin.tree;import java.util. ...

  3. 二叉树前序中序后序及其推理

    二叉书的前中后序遍历顺序. 以下面这个图为例: 前序遍历为:1 2 4 7 3 5 6 8 后序遍历为:7 4 2 5 8 6 3 1 中序遍历为:4 7 2 1 5 3 8 6 规则很简单就是:前序 ...

  4. 用前序中序创建二叉树(用中序后序创建二叉树)

    定义二叉树结点 比如就拿这个二叉树 前序中序创建 因为前序遍历的顺序是 根 , 左 ,右. 中序的遍历是 左 根 右. 我们会很不好想,但我们可以用前序和中序把上面那个二叉树的遍历一边 前序遍历:AB ...

  5. 二叉树前序中序,后序中序,公共最近祖先的实现

    二叉树前序中序,后序中序,公共最近祖先的实现 注释中详细介绍了算法,故不再赘述. 无论是前序还是后序,一个节点的左子树和右子树都是可以看做是分开的,有一定规律可循,故可用递归进行实现. #includ ...

  6. 二叉树的深度(前序 中序 后序 递归非递归搜素)、广度、搜索 C++

    a b c 使用 1 2 3 表示 /* 描述:二叉树的深度(前序 中序 后序 递归非递归搜素).广度.搜索 作者:jz 日期:20140819 */ #include<stdio.h> ...

  7. 前序中序、中序后序以及前序后序构造二叉树

    文章目录 前序中序 中序后序 前序后序 定义的树节点如下, class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { ...

  8. 序列化和反序列化二叉树 -----前序,中序,后序,层序

    目录 一.序列化和反序列化 1.什么是序列化和反序列化 二.前序遍历 1.序列化 1.问题分析 2.代码实现 2.反序列化 1.问题分析 2.代码实现 三.后序遍历 1.序列化 1.思路分析 2.代码 ...

  9. 二叉树的前序中序后序遍历

    二叉树的前序中序后序遍历 二叉树的遍历 前序遍历 中序遍历 后序遍历 总结 二叉树的遍历 二叉树的遍历有前序遍历,中序遍历,后序遍历三种. 今天我把二叉树的遍历方法给大家总结一下,也算对我自己学习的一 ...

最新文章

  1. ine.strip().split()
  2. 王道计算机考研 数据结构 (查找-下)
  3. python编写程序判断今天是今年的第几天_C语言判断今天是今年的第几天
  4. ClickHouse之简单性能测试
  5. go 函数名之前括号中的内容_2020 重学 Go 系列:09. 一篇文章理解 Go 里的函数
  6. android 进程管理机制,Android的进程管理机制
  7. 基于单片机的自动加热水壶控制器代码_应用于实时温度控制的单片机设计
  8. RabbitMQ-理解消息通信-虚拟主机和隔离
  9. matlab深度DoF图像修复,恢复玩dnf在win10中出错client.exe损坏的图像的技巧
  10. 反思 | 事件总线的局限性,组件化开发流程中通信机制的设计与实现
  11. 信号处理基础——傅里叶变换与短时傅里叶变换
  12. android4.2.2飞歌导航,智能车机新典范 飞歌G6S荣耀版导航鉴赏
  13. 【Python网络爬虫实战篇】关于在青果教务网络管理系统爬取学生成绩的分析及代码展示——以郑州轻工业大学(zzuli)教务网络管理系统为例
  14. pnuts系统的局限性_水平系统的局限性
  15. 微信小程序自动定位当前位置
  16. 计算机密码学题目,计算机密码学习题
  17. TypeError: this.getOptions is not a function at Object.lessLoader less安装使用报错
  18. 二手交易APP开发主要功能有哪些?(一)
  19. 移动硬盘插入提示需要格式化RAW_为什么U盘插电脑上提示需要格式化?想让资料不丢失,这样就可以...
  20. 天下没有不会这么回事!不会就学——北漂18年(28)

热门文章

  1. 11.RT-thread项目实战--usb_device 模拟读卡器
  2. 百度云sugar大屏模板2
  3. 为什么要用三维数据可视化?
  4. 企业的好坏,跟员工无关
  5. 按照图片名称移动到文件夹中保存
  6. Python发送微信消息(文字、图片、文件)给指定好友和微信群(调用Win32 API模拟人的手动操作来发送消息)
  7. 基于SSM的电影院订票系统(Spring+SpringMVC+Mybatis)简洁版
  8. 解决msvcp100.dll文件丢失问题
  9. Qt Charts 画平行四边形
  10. python response重头开始_用 Python 修改支付宝运动步数,轻松 TOP1