树的定义
树是n个结点的有限集,当n=0的时候称为空树。
- 有且仅有一个特定的称为根的结点。
- 树的度就是树内各个结点的度的最大值。
- 度为0的结点称为叶结点。
- 度不为0的结点称为分支结点。
树的存储结构
三种不同的表示结构:双亲表示法,孩子表示法,孩子兄弟表示法。
- 双亲表示法
每个结点除了知道自己是谁以外,还知道其双亲在哪里。
#define MAX_TREE_SIZE 100
typedef int ElemType;
typedef struct PTNode
{
ElemType data; //结点数据
int parent; //双亲位置
}PTNode;
typedef struct
{
PTNode nodes[MAX_TREE_SIZE ];
int r; //根的位置
int n; //结点数目
}
- 双亲孩子表示法
#define MAX_TREE_SIZE 100
typedef int ElemType;
typedef struct CTNode
{
int child; //孩子结点的下标
struct CTNode *next; //指向下一个孩子结点的指针
}*ChildPtr;
//表头结构
typedef struct
{
ElemType data; //结点数据
int parent; //双亲位置
ChildPtr firstchild; //指向第一个孩子结点
}CTBox;
//树结构
typedef struct
{
CTBox nodes[MAX_TREE_SIZE];
int r,n;
}