//树的存储结构
//-----------------双亲表示法-----------------//
——————————————
|data|parent|
——————————————
#define MAX_TREE_SIZE 100
typedef int TElemType; //树的结点数据类型,暂定为int
typedef struct PTNode //结点结构
{
TElemType data;//结点数据
int parent; //双亲位置
} PTNode;
typedef struct //树结构
{
PTNode nodes[MAX_TREE_SIZE]; //结点数组
int r,n; //根的位置和结点数
} PTree;
//-----------------孩子表示法-----------------//
//孩子结点
——————————————
|child|next|
——————————————
//表头结点
——————————————————
|data|firstchild|
——————————————————
//树的孩子表示法结构定义
typedef MAX_TREE_SIZE 100
typedef struct CTNode //孩子结点
{
int child;
struct CTNode *next;
} *ChildPtr;
typedef struct //表头结构
{
TElemType data;
ChildPtr firstchild;
}CTBox;
typedef struct //树结构
{
CTBox nodes[MAX_TREE_SIZE]; //结点数组
int r,n;
}CTree;
//-----------------孩子兄弟表示法-----------------//
__________________________
|data|firstchild|rightsib|
——————————————————————————
data:数据域
firstchild:指针域,存储该结点的第一个孩子结点的存储地址
rightsib:指针域,存储该结点的右兄弟结点的存储地址
typedef struct CSNode //树的孩子兄弟表示法结构定义
{
TElemType data;
struct CSNode *firstchild, *rightsib;
}CSNode, *CSTree;
孩子兄弟表示法的最大好处就是 它把一颗复杂的树变成了一颗二叉树。