树、森林与二叉树

一 树的存储结构

1 双亲表示法

(1)定义

采用一组连续空间存储每个结点,同时在每个结点中增设一个伪指针,指示器双亲结点在数组中的位置。

(2)实例

树、森林与二叉树_第1张图片

其双亲表示为

A -1
B 0
C 0
D 1
E 1
F 2

 2 孩子表示法

(1)定义

将每个结点的孩子结点都用单链表链接起来形成一个线性结构,此时n个结点就有n个孩子结点。

(2)实例

树、森林与二叉树_第2张图片

其孩子表示法为:

树、森林与二叉树_第3张图片

3 孩子兄弟表示法

以二叉链表作为树的存储结构,孩子兄弟表示法使每个结点包括三个部分:结点值、指向结点第一个孩子结点的指针,指向结点下一个兄弟结点的指针。

二 树和森林的遍历

1 树的遍历

(1)先根遍历

若树非空,先访问根节点,再依次遍历根节点的每颗子树,遍历子树时仍遵循先根后子树的规则。其遍历序列与这棵树相应二叉树的先序序列相同。

(2)后根遍历

若树非空,先依次遍历根节点的每颗子树,再访问根节点,遍历子树时仍遵循先子树后根的规则。其遍历序列与这棵树相应二叉树的中序序列相同。

2 森林的遍历

(1)先序遍历森林

  • 访问森林中第一棵树的根节点。
  • 先序遍历第一棵树中根结点的子树森林。
  • 先序遍历除去第一棵树之后剩余的树构成的森林。

(2)后根遍历

  • 中序遍历第一棵树中根结点的子树森林。
  • 访问森林中第一棵树的根节点。
  • 中序遍历除去第一棵树之后剩余的树构成的森林。

你可能感兴趣的:(数据结构,算法)