双亲孩子表示法:
把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空,然后n个头指针又组成一个线性表,采用顺序存储结构,存放一个一维数组中
#define MAX_TREE_SIZE 100
typedef struct ChildNode //孩子结点
{
int childIndex; //孩子结点所在数组的下标
ChildNode* next; //下个孩子结点的指针
}ChildNode;
typedef struct TableNode //表头结构
{
int data; //表头中的数据
int parentIndex; //双亲所在数组的下标
ChildNode* firstchild; //首个孩子结点的指针
}TableNode;
typedef struct Tree //树结构
{
TableNode nodes[MAX_TREE_SIZE]; //结点数组
int r; //根的位置
int n; //结点数
}Tree;
二叉链表:
typedef struct BiTNode
{
int data; //结点数据
BiTNode* lchild; //左孩子指针
BiTNode* rchild; //右孩子指针
}BiTNode;