既然顺序存储适用性不强,我们就要考虑链式存储结构。二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域是比较自然的想法,我们称这样的链表叫做二叉链表。结点结构图如表6-7-1所示。
lchild | data | rchild |
---|---|---|
其中data是数据域,lchild和rchild都是指针域,分别存放指向左孩子和右孩子的指针。
以下是我们的二叉链表的结点结构定义代码。
/* 二叉树的二叉链表结点结构定义 */
/* 结点结构 */
typedef struct BiTNode{
/* 结点数据 */
TElemType data;
/* 左右孩子指针 */
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
结构示意图如图6-7-5所示。
就如同树的存储结构中讨论的一样,如果有需要,还可以再增加一个
指向其双亲的指针域,那样就称之为三叉链表。