数据结构之前序遍历,中序遍历,后序遍历
前序遍历-》首先访问根结点,
然后遍历左子树,
最后遍历右子树。
在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
中序遍历-》首先遍历左子树,
然后访问根结点,
最后遍历右子树。
在遍历左、右子树时,仍然先遍历左子树,再访问根结点,最后遍历右子树。
后序遍历-》首先遍历左子树,
然后遍历右子树,
最后访问根结点。
在遍历左、右子树时,仍然先遍历左子树,再遍历右子树,最后访问根结点。
记忆麻烦,直接记:前就是首先,中就是中间,后就是最后,前序遍历就是首先根结点,中序遍历就是中间再访问根结点,后序遍历就是最后访问根结点!
1. 已知前序、中序遍历,求后序遍历
前序遍历: DBAECHMZ
中序遍历:ABCEDMHZ
先根据前序遍历得到根结点为D。根据中序遍历就可以知道ABCE为左子树,MHZ为右子树。
再根据前序遍历,D之后就是BAEC为左子树,所以B是离根节点最近的一个左子树的根结点,B为ADCE左子树的根结点,
再根据前序遍历,D之后的HMZ为右子树, 所以H是离根结点最近的一个右子树的根结点,H为HMZ右子树的根结点,
所以: D
∧
B H
接下来截断为:
前序:BAEC
中序:ABCE
再根据前序遍历,左子树根结点为B,根据中序遍历就可以知道A为左子树,CE为右子树
再根据前序遍历,B之后就是A为左子树,没啥好分析了
再根据前序遍历,B之后就是EC为右子树,所以E是离根结点最近的一个右子树的根结点,E为EC右子树的根结点
所以: B
∧
A E
同理,再分析右子树,最后可得二叉树的结构为: D
∧
B H
∧ ∧
A E M Z
/
C
搞定! 一般先用前序遍历跟后序遍历分析出哪个是根结点,用中序遍历分析出左右子树!愉快的一晚!
数据结构之前序遍历,中序遍历,后序遍历相关推荐
- 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件: ⑴有且仅有一个结点没有前驱 ...
- 数据结构笔记 —— 二叉树(前序、中序、后序遍历和查找)
本篇博客是根据b站尚硅谷的数据结构教程,学习后写的学习笔记,本篇博客的重点在自己编写的代码注释和过程分析上 https://www.bilibili.com/video/BV1E4411H73v?p= ...
- C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历)
C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历) tips:前些天学习了C语言数据结构链表,栈,队列.今天来学习一下C语言数据结构之二叉树的各种操作. 注意:二叉树的层次建树是 ...
- C/C++编程笔记:数据结构二叉树的查找(前序、中序、后序、层序遍历)
建立一棵含有n个结点的二叉树,采用二叉链表存储: 输出前序.中序.后序..层序遍历该二叉树的遍历结果. 定义二叉树的数据类型--二叉树结点结构体BiNode.建立二叉链表可以采用扩展二叉树的一个遍历序 ...
- 【数据结构】理解二叉树的三种遍历--前序、中序、后序 +层序(简明易懂)
一.易懂的形象理解 其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多类似的了,那咱们换个思路~ 先用我想的一种简单易懂的形象思维理解一下前序.中序. ...
- 二叉树深度优先 java_二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历) java实现...
二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的.对于二叉树,有深度遍历和广度遍历,深度遍历有前序.中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历.由于树的 ...
- 二十五、二叉树的前序、中序、后序遍历
一.为何使用树这种数据结构 数组存储方式的分析 优点:通过下标方式访问元素,速度快.对于有序数组,还可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较 ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- PHP实现二叉树的深度优先遍历(前序、中序、后序)和广度优先遍历(层次) 转载陈小龙哈2017...
http://blog.csdn.net/baidu_30000217/article/details/52953127 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点 ...
- 二叉树的前序、中序、后序遍历与创建
#include <iostream> #include <string> #include <stack> using namespace std; struct ...
最新文章
- java ee有哪些工具_JavaEE开发中最常用到的技术和工具汇总
- java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...
- JVM中的Stack和Heap1
- oracle 测试数据类型,oracle修改表字段的数据类型测试
- docker入门之容器网络
- robomaster裁判系统服务器,2018裁判系统调试组网完全攻略
- 从jHiccup开始
- Oracle插入时间
- pytorch学习笔记(二十九):简洁实现循环神经网络
- 剑指Offer之和为S的连续正数序列
- 教你利用 Python 计算同比、环比、定基比
- miui12系统小米系统安卓系统里面存储空间占用太多如何清理
- 前端学习个人心得,总结(个人向)
- 行业寒冬下,简历发了几千次已读不回,功能测试的出路在哪里?
- mysql:mysql数据库下载及安装(详细)
- 爱上收纳的花艺师:热爱生活,就能被生活治愈
- ios运行html时黑屏,iOS-启动图黑屏解决方法
- HACK彩虹易支付超完整源码+内附11个模板
- This connection has been closed,应用连接数据库后1-3小时,即自动断开连接
- QT全平台支持——开始学习