二叉树遍历方法

原创 2015年07月10日 15:53:39

二叉树遍历:

先序遍历:

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

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

中序遍历

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

后序遍历

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

总结

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

题目:



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

答案为:A


题目二:

答: 后序序列为gdbehfca

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

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

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

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

问题的二叉树如下:




相关文章推荐

二叉树遍历的基本方法(递归与非递归)

对于如何对二叉树进行遍历的方法,比较经典的就是二叉树的先序中序后序的递归与非递归算法。 接下来是本人总结的针对每种方法的不同形式算法(这里就直接写程序代码): typedef struct Bitre...

Python实现二叉树遍历方法(leetcode)

无聊刷个leetcode,顺便温习一下N久没有搞过的语法训练 __author__ = 'Diro' # Definition for a binary tree node. class TreeNo...

Binary Tree Traversal二叉树遍历方法总结

Binary Tree Traversal二叉树遍历方法总结这里总结的二叉树遍历分为两大类: 深度优先(depth-first traversal) 广度优先(breadth-first traver...

二叉树遍历方法

二叉树的遍历二叉树的应用中通常会用到三种遍历方法,前序、中序和后序,对应的遍历顺序是:根左右、左根右、左右根。如果采用二叉链表的存储结构,使用递归实现最简单,下面是用伪代码递归实现的前序遍历:Stat...

ACM_算法_二叉树遍历方法的互相转换 (TOJ 3988 Password)

题目链接:http://acm.tju.edu.cn/toj/showp3988.html 很裸的一道二叉树的题目,题意很简单,通过先序遍历(root,left,right)和中序遍历(left,r...

一步一步学数据结构之1--n(二叉树遍历--四种方法--递归式)

今天来介绍下二叉树的4种遍历方式,如果对二叉树不熟悉的话,请先去本系列二叉树的介绍中先学习。   遍历:单链表的遍历是指从第一个结点开始(下标为0的结点),按照某种次序依次访问每一个结点。      ...

二叉树遍历,递归和非递归方法

// BinTree.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include #in...
  • cdjzzzz
  • cdjzzzz
  • 2016年02月25日 11:37
  • 111

树 -- 二叉树遍历方法思路大总结(10种方法)

遍历是二叉树的一类重要操作,也是二叉树的其它操作 二叉树(Binary Tree) 定义:含有n(n>=0)个结点的有限集合。当n=0时为空二叉树, 在非空二叉树中:有且仅有一个根结点;其余节点划分...

二叉树遍历的通用非递归算法.pdf

  • 2007年12月12日 23:01
  • 403KB
  • 下载

二叉树遍历源代码

  • 2015年06月21日 13:05
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树遍历方法
举报原因:
原因补充:

(最多只允许输入30个字)