树的定义
结点分类
基本概念:度、叶结点或者称终端结点、非终端结点或者称分支结点(除了根结点外,分支结点也称作内部结点)
结点间的关系
孩子、双亲、兄弟、子孙
树的其他相关概念
结点的层次、树的深度或者高度、序树、无序树、森林
树的抽象数据类型
树的存储结构
综合顺序存储结构和链式存储结构,介绍三种不同的表示方法:
1.双亲表示法:
思路是:根结点--(firstchild)—》长子 ---(rightsib)--》右兄弟(根结点的次子)
双亲《----(parent)----长子
概念:data(数据域)、parent(指针域)、firstchild(长子域)、rightsib(右兄弟域);
注意:1)根结点没有双亲,所以约定根结点的位置域设置为 -1 ;
2)如果没有孩子的结点,这个结点的长子域就设置为 -1 。
2.孩子表示法:
第一种方案:
data—》child1——》child2——》child3——》。。。——》childd
由于第一种方案浪费空间,所以有第二种方案,增加了度标识,来分配指针域的个数。
第二种方案:
data—》degree——》child1——》child2——》child3——》。。。——》childd
孩子结点的单链表、头指针的线性表
firstchild 是头指针域,出租出该结点的孩子链表的的头指针。
双亲孩子表示法(了解):在孩子表示法的第二种方案的基础上加入了parent指针域,可以反溯孩子结点的双亲。。。。
3.孩子兄弟表示法:
data—》firstchild ----》rightsib
找双亲:增加parent指针域
完全二叉树
完全二叉树:当前的结点的序号为s,则其左孩子序号为2s,右孩子为2s+1