前面讲解了存储普通树的双亲表示法和孩子表示法,本节来讲解最后一种常用方法——孩子兄弟表示法。
图 1 普通树示意图
在树结构中,同一层的节点互为兄弟节点。例如图 1 的普通树中,节点 A、B 和 C 互为兄弟节点,而节点 D、E 和 F 也互为兄弟节点。
所谓孩子兄弟表示法,指的是用将整棵树用二叉链表存储起来,具体实现方案是:从树的根节点开始,依次存储各个结点的孩子结点和兄弟结点。
在二叉链表中,各个结点包含三部分内容(如图 2 所示):
- 节点的值;
- 指向孩子结点的指针;
- 指向兄弟结点的指针;
图 2 结点结构示意图
用 C 语言代码表示结点结构为:
#define ElemType char
typedef struct CSNode{
ElemType data;
struct CSNode * firstchild,*nextsibling;
}C