关闭

二叉树遍历方法

257人阅读 评论(0) 收藏 举报
分类:

二叉树遍历:

先序遍历:

先序遍历也叫做先根遍历前序遍历,可记做根左右(二叉树父结点向下先左后右)。
首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返回。

例如,所示二叉树的遍历结果是:ABDECF

中序遍历

中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游,可记做左根右。
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,再访问根结点,最后遍历右子树。即:
二叉树为空则结束返回
否则:
(1)中序遍历左子树。
(2)访问根结点。
(3)中序遍历右子树。
中序遍历中序遍历
注意的是:遍历左右子树时仍然采用中序遍历方法。
如右图所示二叉树
中序遍历结果:DBEAFC
中序遍历的时间复杂度为:O(n)。
如果一棵二叉排序树的节点值是数值,中序遍历的结果为升序排列的数组。可以利用该性质检测一棵树是否为二叉排序数。
已知前序遍历和后序遍历,不能确定唯一的中序遍历。

后序遍历

后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根。后序遍历有递归算法和非递归算法两种。
后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后遍历根结点。即:
二叉树为空则结束返回,
否则:
(1)后序遍历左子树
(2)后序遍历右子树(3)访问根结点
如右图所示二叉树
后序遍历结果:DEBFCA
已知前序遍历和中序遍历,就能确定后序遍历。

总结

三种遍历方法分别简记:根左右、左跟右、左右根。(左右不变,根从第一个位置开始变动)

题目:



解决思路:首先先序遍历以F开始,则ABDCE在整个树左边,GH在整个树右边
二叉树为:

答案为:A


题目二:

答: 后序序列为gdbehfca

过程是首先还原二叉树,再求出后序遍历序列,过程如下:

首先从前序第一个得到根,回到中序来将其分割为左子树dgb、根a、右子树echf

再分别按照左右子树的结点回到各自的前序来再次求出左右子树的根,依然是回到刚才已经切分出左右子树的中序序列来分割

重复这个过程,就可以还原出二叉树了

问题的二叉树如下:




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17415次
    • 积分:369
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:13篇
    • 译文:0篇
    • 评论:0条