树的存储方式有三种.分别为双亲表示法,孩子表示法,孩子兄弟表示法
1.双亲表示法,借助一维数组实现
//由于根结点没有双亲,约定根结点的位置域设为-1;
/* typedef struct TreeNode
{
int data; //结点数据
int parent; //双亲位置
}TreeNode;
typedef struct Tree
{
TreeNode nodes[MAXSIZE]; //树结构
int r, n; //根节点位置 结点数
}Tree;
2.孩子表示法
//把每个结点的孩子结点排列起来,以单链表作为存储结构
//n个结点有n个孩子链表,如果是叶子结点此单链表为空
//然后n个头指针又组成一个线性表,采用顺序存储结构,放进一个一维数组
/*
typedef struct Node //孩子结点
{
int child; //孩子
struct Node * next;
}Node;
typedef struct Box //表头结构
{
int data;
Node * FirstChild;
}Box;
typedef struct Tree
{
Box nodes[MAXSIZE];
int r, n; //根的位置 结点数
}Tree;
*/
3.孩子兄弟表示法
typedef struct TreeNode
{
struct TreeNode * child;
struct TreeNode * brother;
int data;
}TreeNode;
typedef struct Tree
{
TreeNode * root;
}Tree;