数据结构-二叉树的先序、中序、后序遍历
来源:互联网 发布:南京高新区网络问政 编辑:程序博客网 时间:2024/05/03 07:25
二叉树的遍历
在软考或者自考中,总有这类的试题
求出下图所示的二叉树的先序遍历、中序遍历和后序遍历的节点序列
先序遍历
我来附上一张手绘图(看着有点没技术含量)
这里你就会纳闷,数字1是做什么用的,别急,听我下面慢慢给您解释:
我们从A作为入口,然后把这个整个的二叉树外围画一遍,从A出发,第一次遇见B,所以我们就在B的左侧上数字1,然后第一次遇到C,所以我们在C的左侧写上数字1,然后遇到第一次遇到E,我们在E的左侧写上数字1,以此类推,把整个的二叉树遍历完全,然后我们就开始找数字1,出来的就是它的先序序列:ABCEDFGKH
思想:若二叉树为空,返回,否则:
1、遍历根节点;2、先序遍历左子树;3、先序遍历右子树,需要注意的是:遍历左右子树的时候仍然采用先序遍历方法。那么遍历的结果就是:根--左--右
中序遍历
依旧手绘图:
这里你就会纳闷,数字1是做什么用的,别急,听我下面慢慢给您解释:
我们从A作为入口,然后把这个整个的二叉树外围画一遍,从A出发,发现A的左右子树都存在,那么就在A的下方写上一个数字0,然后找B,B的左右子树都存在,在B的下方协商一个数字0,C,发现C只有左子树没有右子树,那么就在C的右边写上一个数字0,然后找E,发现E没有左右子树,就在E的下方写上一个数字0,。以此类推,我们就找到了中序遍历:ECBDAGKFH
思想:
1、中序遍历左子树;2、访问根节点;3、中序遍历右子树。那么中序遍历的结果就是:左--根--右
后序遍历
依旧手绘图
这里你就会纳闷,数字1和2是做什么用的,别急,听我下面慢慢给您解释:
我们从A作为入口,然后把这个整个的二叉树外围画一遍,从A出发,流入A第一次,写上数字1,继续走流入B第一次,所以写上数字1,然后流入C第一次,依旧写1,流入E第一次,写1,然后流出E流向了C,那么就遇到了E第二次,C第二次,所以写上数字2,然后流入D第一次,流出D,写上数字2,以此类推,后序遍历:ECDBKGHFA
思想:
1、后序遍历左子树;2、后序遍历右子树;3、访问根节点。所以:后序遍历的结果是:左--右--根。
- 数据结构与算法系列-树-二叉树的遍历(先序、中序、后序)
- 数据结构之 二叉树的构造与遍历(先序,中序,后序,层次)
- 数据结构-二叉树的先序、中序、后序遍历
- 数据结构---二叉树的创建、先序、中序、后序遍历
- 数据结构 二叉树的先序 中序 后序遍历(linux 下c语言实现)
- 数据结构之二叉树的递归遍历(先序,中序,后序)
- 数据结构--二叉树的创建、先序遍历、中序遍历、后序遍历、深度、叶子结点数
- 【数据结构】二叉树的先序遍历
- 二叉树的遍历(先序、中序、后序)
- 二叉树的先序、中序、后序遍历
- 二叉树的遍历:先序、中序、后序
- 二叉树的先序、中序、后序遍历
- 二叉树的先序、中序、后序遍历
- 二叉树的先序,中序,后序遍历
- 二叉树的先序、中序、后序遍历
- 二叉树的先序,中序,后序遍历
- 二叉树的先序、中序、后序遍历
- 二叉树的先序、中序、后序遍历
- 思想归纳
- My first Struct experience
- Android 混淆问题记录can't find superclass or interface
- Helix --未完待续
- js和SpringMvc灵活使用cookie
- 数据结构-二叉树的先序、中序、后序遍历
- 多进程和多线程的应用场景
- Java 中重写与重载的规则、区别
- android的内存管理简介
- strcpy与memcpy的区别
- 用java实现十进制转换
- C#:自定义事件
- Jquery中show的用法
- 文章标题