没有合适的资源?快使用搜索试试~ 我知道了~
数据结构二叉树遍历.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2021-10-02
11:41:52
上传
评论
收藏 139KB DOC 举报
温馨提示
试读
14页
数据结构二叉树遍历.doc
资源推荐
资源详情
资源评论
. .
6.3 二叉树遍历
6.3.1 二叉树遍历的定义
所谓二叉树遍历,就是按某种规那么访问二叉树的每个结点,且每个结点仅
被访问一次。“访问〞的含义十分广泛,包括对结点所作的各种操作与处理,如有
关学生考试成绩的信息存储在一棵二叉树中,每个结点含有学号、、成绩等信
息,在对这些信息进展管理时常常需要做这样的工作:
〔〕RRRRRRR打印每个学生的学号、、成绩等信息;
〔〕RRRRRRR将每个学生的成绩由百分制记分改为五级制记分;
〔〕RRRRRRR统计优、良、中、及格和不及格各档次的人数。
在〔〕中“访问〞的含义是打印每个结点的信息;对于〔〕,“访问〞是对
成绩进展修改的操作;〔〕中“访问〞是统计操作。不管访问的具体操作是什
么,都必须做到既无重复,又无遗漏。
一棵二叉树由根结点、左子树、右子树三个根本单元组成,根结点处于一个分割左
子树和右子树的位置,假设能遍历这三局部,那么完成对一棵二叉树的遍历。假设以
〔〕、、分别代表访问根结点、遍历左子树、遍历右子树,那么
访问二叉树结点的规那么可有 、、 三种遍历和 、、 三种逆遍
历方式。一般限定先左后右,仅讨论前三种遍历,分别称之为前序遍历〔
〕、中序遍历〔〕和后序遍历〔
〕。基于二叉树的递归定义,可得三种遍历二叉树的递归定义:
前序遍历二叉树 中序遍历二叉树 后序遍历二叉树
根RRRRRRRR
左子树RRR右子树
根
左子树RRR右子树
根
左子树RRR右子树
假设二叉树为空,那么
空操作;
否那么〔〕访问根结
点;
〔〕前序遍历左子树;
〔〕前序遍历右子树。
假设二叉树为空,那么
空操作;
否那么〔〕中序遍历左
子树;R
〔〕访问根结点;
〔〕中序遍历右子
树。
假设二叉树为空,那么
空操作;
否那么〔〕后序遍历左
子树;
〔〕后序遍历右子树。
〔〕访问根结点;
. .word.zl.
. .
从上述定义可以看出,三种遍历的不同之处仅在于访问根结点、遍历左、右
子树的先后次序不同。“前序〞是指最先访问根结点;“中序〞是指根结点在访问
左、右子树之间被访问;“后序〞是指根结点在左、右子树访问之后被访问。对于
如图 所示的二叉树,前序遍历该二叉树时的结点访问序列为: !"#$%
&';中序访问序列为:"!$# %'&;后序访问序列为:"$#!'&
% 。
!%
"#&
$'
图 二叉树遍历
6.3.2 前序遍历算法描述
1.递归算法
由前序遍历二叉树的递归定义,容易得到相应的递归算法。前序遍历首先
访问根结点,再访问左子树,然后访问右子树。对左子树的访问,也是先访问其
根结点,再访问左其子树,然后访问其右子树,如此反复,逐步将“大树〞的访问
分解为“左、右子树〞的访问,直到其子树为空。这是一个典型的递归模型。假设
二叉树以二叉链表存储,对结点的访问操作简化为输出打印结点值,可根据实际
应用具体化为其他操作,那么前序遍历二叉树的递归算法如下:
算法 6.1
!
()前序遍历二叉树的递归算法)(
*
* +,〞-./0((访问根结点
./10((遍历左子树
./10((遍历右子树
2
30
. .word.zl.
. .
2
如图 4 所示为前序遍历二叉树的过程示意图。带箭头的包围虚线表示前序
遍历过程中所走的一条搜索路径,其中向下的箭头表示向更深一层的递归调用,
向上的箭头表示从递归调用返回,包围虚线旁方形内的字符表示搜索路径中访问
的结点,访问序列为: !"#%&。
!%!!%
"#&""#&
!"#%&
〔〕前序遍历二叉树— !"#%&〔5〕前序遍历过程示意图
图 二叉树前序遍历过程示意图
2.非递归算法
下面,我们来讨论前序遍历算法的非递归实现。一个具有递归特点的问题,
如果用非递归的程序实现,通常可以借助于栈来实现递归层次调用时的参数传
递。前序遍历的顺序为:,在访问根结点后对根的左子树遍历,当左子树遍
历完后沿走过的路线返回到根结点,再通过根结点找到其右子树。因此,为了在
左子树遍历完后能够找到其右子树,该根结点必须在左子树遍历前入栈保存。假
设栈为一顺序栈,二叉树遍历的非递归算法涉及栈的入栈、出栈等多种操作,将
充分展示栈的威力,是栈构造的一个极好的应用。
算法 6.2
678 #99
:!
()前序遍历二叉树的递归算法)(
* !;1<=8 #>-:0
:?90
:?0
*
@:A?B
. .word.zl.
剩余13页未读,继续阅读
资源评论
gjmm89
- 粉丝: 13
- 资源: 19万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功