树:是n(n>=0)个结点的有限集合。若n=0,称为空树。若n>0,则有且仅有一个特定的称为根Root的结点;其余结点可分为m(m>=0)个互不相交的有限集T1,T2,...,Tm;
森林:m(m>=0)棵互不相交的树的集合。
实现:定义结构数组。存放树的结点,每个结点含有两个域:
特点:找双亲容易,找孩子难。
C语言的类型描述
//结点的定义
typedef struct PTNode{
TElemType data;
int parent;
}PTNode;
// 树的结构
# define MAX_TREE_SIZE 100 //定义数组长度
typedef struct {
PTNode nodes[MAX_TREE_SIZE];//定义结点类型的数组用来存放结点
int r,n;//根节点的位置和结点个数
}PTree;
//孩子节点结构
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;
孩子兄弟表示法又称为二叉树表示法或二叉链表表示法。
typedef struct CSNode{
ElemType data;
struct CSNode *firstchild,*nextsibling;
}CSNode,*CSTree;
原文:https://www.cnblogs.com/lianggaobo/p/14992871.html