二叉树的前序、中序和后序遍历
2015-08-23 14:04
218 查看
今天做到阿里巴巴的一道笔试题,关于二叉树的遍历序列的,原题摘录如下:
某二叉树的先序遍历是12453,中序遍历是42513,那么其后续遍历是?
A 45231
B 42351
C 12345
D 54321
本题考查的知识点是二叉树前序、中序、后序遍历的相互求法,即如果知道两个的遍历,如何求第三种遍历。
首先,我们看看前序、中序、后序遍历的特性:
前序遍历(前序遍历):
1.访问根节点
2.前序遍历左子树
3.前序遍历右子树
中序遍历:
1.中序遍历左子树
2.访问根节点
3.中序遍历右子树
后序遍历:
1.后序遍历左子树
2.后序遍历右子树
3.访问根节点
以本题为例简单说明:先序遍历是 12453 依据先序遍历的特性:先序是先访问根节点 所以1是二叉树的根节点,后序遍历是先访问左子树和右子树,后访问 425**1**3,在1的左边的是二叉树的左子树425,1右边的3是二叉树的右子树,右子树只有一个节点,所以可以先构造出一个二叉树为
1
3(1的右子树)
再看先序遍历 1 245 3和后序遍历**425***1*3,2是左子树的根节点,在后序遍历中 2在4和5的中间 ,所以 4是2的左子树,5是2的右子树,构造出的二叉树为:
1
21的左子树) 3(1的右子树)
4 (2的左子树) 5(2的右子树)
所以后序遍历序列为 45231
本题答案为A
如果给出后序遍历和中序遍历来求前序遍历的分析也是一样。
某二叉树的先序遍历是12453,中序遍历是42513,那么其后续遍历是?
A 45231
B 42351
C 12345
D 54321
本题考查的知识点是二叉树前序、中序、后序遍历的相互求法,即如果知道两个的遍历,如何求第三种遍历。
首先,我们看看前序、中序、后序遍历的特性:
前序遍历(前序遍历):
1.访问根节点
2.前序遍历左子树
3.前序遍历右子树
中序遍历:
1.中序遍历左子树
2.访问根节点
3.中序遍历右子树
后序遍历:
1.后序遍历左子树
2.后序遍历右子树
3.访问根节点
以本题为例简单说明:先序遍历是 12453 依据先序遍历的特性:先序是先访问根节点 所以1是二叉树的根节点,后序遍历是先访问左子树和右子树,后访问 425**1**3,在1的左边的是二叉树的左子树425,1右边的3是二叉树的右子树,右子树只有一个节点,所以可以先构造出一个二叉树为
1
3(1的右子树)
再看先序遍历 1 245 3和后序遍历**425***1*3,2是左子树的根节点,在后序遍历中 2在4和5的中间 ,所以 4是2的左子树,5是2的右子树,构造出的二叉树为:
1
21的左子树) 3(1的右子树)
4 (2的左子树) 5(2的右子树)
所以后序遍历序列为 45231
本题答案为A
如果给出后序遍历和中序遍历来求前序遍历的分析也是一样。
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- 文件遍历排序函数
- Lua 学习笔记之C API 遍历 Table实现代码
- C#中遍历Hashtable的4种方法
- Erlang中遍历取出某个位置的最大值代码
- C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
- C++实现图的邻接表存储和广度优先遍历实例分析
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C++非递归队列实现二叉树的广度优先遍历
- php遍历目录方法小结
- 一个目录遍历函数
- php遍历删除整个目录及文件的方法
- PHP遍历文件夹与文件类及处理类用法实例
- PHP遍历XML文档所有节点的方法
- php中使用key,value,current,next和prev函数遍历数组的方法
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- C#使用foreach遍历哈希表(hashtable)的方法
- 阿里巴巴2016数据挖掘工程师真题在线测
- 平衡二叉树