遍历的含义
-
遍历含义: 顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问依次,而且仅被访问一次,又称周游。
- “访问”的含义很广,可以是对结点作各种处理,如:输出结点的信息,修改结点的数据值等,但要求这种访问不能破坏原来的数据结构。
-
遍历目的: 得到树中所有结点的一个线性排列,以便于后续操作。
-
遍历用途: 它是插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。
二叉树遍历方法
-
遍历方法总述
因为二叉树是一个递归的定义,一棵二叉树可以分为3个部分,即根结点+左子树+右子树。所以依次遍历二叉树中的三个组成部分,便是遍历了整个二叉树。
这里,假设:
L:遍历左子树
D:访问根结点
R:遍历右子树
则遍历整个二叉树的方案共有6种,即DLR、LDR、LRD、DRL、RDL、RLD。 因为二叉树的对称结构,所以前三种和后三种一样,若规定先左后右,则只有前三种情况:- DLR——先序遍历(先根遍历)
- LDR——中序遍历(中根遍历)
- LRD——后序遍历(后根遍历)
-
先序遍历
- 算法描述:
若二叉树为空,则空操作;否则- 访问根结点
- 先序遍历左子树
- 先序遍历右子树
- 例子:


- 算法描述:
-
中序遍历
- 算法描述:
若二叉树为空,则空操作;否则- 中序遍历左子树
- 访问根结点
- 中序遍历右子树
- 例子:


- 算法描述:
-
后序遍历
- 算法描述:
若二叉树为空,则空操作;否则- 后序遍历左子树
- 后序遍历右子树
- 访问根结点
- 例子:


- 算法描述:
-
两个例题


由遍历序列确定二叉树
- 若二叉树中各结点的值均不相同,则二叉树结点的先序遍历、中序遍历和后序遍历序列都是唯一的。
- 由二叉树的先序序列和中序序列,或者由二叉树的后序序列和中序序列可以确定唯一一棵二叉树。
具体这部分内容,可以参考王卓老师的讲解
36万+

被折叠的 条评论
为什么被折叠?



