二叉树的存储及遍历
- 二叉树的存储结构:
1.顺序存储结构-适用于完全二叉树
一般二叉树也可以通过补全结点,采用这种结构(会造成空间的浪费):
2.链表存储:定义结构,含有三个域,分别存放数据、左结点、右结点
- 二叉树的遍历(以链式存储为例):
- 递归(根本还是堆栈)实现
- 先序遍历:
- 中序遍历:
- 后序遍历:
- 每个节点都有三次碰到的机会,遍历过程中经过结点的路线一样,只是访问各结点的时机不同
- 先序遍历:
2.二叉树的非递归遍历(直接用循环和栈):
1.中序遍历:
2.先序遍历:
3.层序遍历:
-
-
- 二叉树遍历的本质问题:二维结构的线性化
- 问题:遍历需要访问左右结点,访问了一个结点以后另一个结点怎么办-保存另一个结点或者当前结点
- 如何保存这些结点:堆栈、队列----(前序中序后序,用堆栈保存自己这个结点(也可以保存右结点)
- 用队列保存右结点:从根结点开始,抛出一个元素,存入该节点的左右结点
- 特征:一层一层的访问
-