以如下形式的树结构为例:
该树的深度为3, 其双亲孩子表示法如下:
表中第一列为结点编号,第二列为结点数据,第三列为该节点的双亲编号(根节点双亲为-1),后面的单链表表示了该节点所有的孩子,从左至右依次进行遍历。
代码实现如下:
#define MAX_TREE_SIZE 100
typedef char ElemType;
// 孩子结点
typedef struct CTNode
{
int child; // 孩子结点的下标
struct CTNode *next; // 指向下一个孩子结点的指针
} *ChildPtr; // ChildPtr是一个CTNode类型的指针
// 表头结构
typedef struct
{
ElemType data; // 存放在树中的结点的数据
int parent; // 存放双亲的下标
ChildPtr firstchild; // 指向第一个孩子的指针
} CTBox;
// 树结构
typedef struct
{
CTBox nodes[MAX_TREE_SIZE]; // 结点数组
int r, n;
}
注意该代码只是说明了数结构的一种表示方法,并未对树进行操作,只是一种架构。