§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
这种存储结构便于实现各种树的操作。首先易于 实现找结点孩子等的操作。如果为每个结点增设一个 (parent)域,则同样能方便地实现Parent(T, x)操作。
§6.4 树和森林
❖森林和二叉树的转换
1. 树和二叉树的对应关系 由于二叉树和树都可用二叉链表作为存储结构,
R AB C
DE
F
GHK
R^
A
^D
^B
^E ^
C^
F^
^G
^H
^K ^
§6.4 树和森林
❖树的二叉链表(孩子 - 兄弟)存储表示
typedef struct CSNode { Elem data; struct CSNode *firstchild , *nextsibling;
} CSNode, *CSTree;
A BC D E F GH
A BC D
E F GH A
BC D
1)在兄弟之间加一条连线; 2)对每个结点,除了左孩子外,去除其与其余孩子之间的联系; 3)以根结点为轴心,将整个树顺时针转45°。
Ia
A B
Ib
E F
d
C D
G H I
c E F G H I
§6.4 树和森林
❖森林和二叉树的转换
2. 森林和二叉树的对应关系 从树的二叉链表表示的定义可知,任何一棵
§6.4 树和森林
3
6^
5^
0
1
7
8
2^ 9^
R AB C
DE
F
GHK
§6.4 树和森林 ❖树的存储结构——孩子兄弟表示法
或称二叉树表示法,或称二叉链表表示法。即以 二叉链表作树的存储结构。链表中结点的两个链域分 别指向该结点的第一个孩子结点和下一个兄弟结点。