树:
树是n个结点的有限集。若n=0,称为空树;
若n>0:有且仅有一个特定的称为根的结点。其余结点可分为m(m>=0)个互不相交的有限集
森林:
是m(m>=0)课互不相交的树的集合
树的存储结构:
双亲表示法(找双亲容易,找孩子难)
实现 : 定义结构数组
存放树的结点,每个结点含两个域:
- 数据域:存放结点本身信息
- 双亲域 :指示本结点的双亲结点在数组中的位置
树的存储结构:
typedf struct PTNode{
TEleType data;
int parent;//双亲位置域
}PTNode;
树结构:
#define MAX_TREE_SIZE 100
typedef struct{
PTNode nodes[MAX_TREE_SIZE];
int r,n;//根节点的位置和结点个数
}PTree;
孩子链表(找孩子容易,找双亲难):
把每个结点的孩子结点排序起来,看成一个线性表,用单练表存储,则n个结点有n个孩子链表(叶子的孩子链表为空表)。而n个头指针又组成一个线性表,用顺序表(含n个元素的结构数组)存储。
孩子结点类型:
<