2、树的基本术语
3、树的存储结构(3种)
4、树和森林转化为二叉树
5、树和森林的遍历(树两种、森林两种)
树的定义树结构可以说是我们日常生活中“树”的一种抽象,树只有一个根,其余都是树的枝叶,数据结构中的树类似一颗“倒立”的树,如下:
这颗树是由若干结点(A~Q)组成,所以树是由唯一的根结点和互不相干的若干子树组成。树的定义:由n(n>=0)个有限节点组成一个具有层次关系的集合。
当结点数n=0时,称为空树,这是一种特殊状态。由上可知,树的定义是递归的,即在整颗树中,若干子树也是树的定义。
树的基本术语以上图为例进行说明。(这些概念不必死记,很好理解)
结点:A~Q都是结点,结点不仅包含了数据元素,还包含了指向子树的分支信息,如A结点就包含了6个分支信息。(类似链式存储中的节点,既有数据域,又有指针域)。
结点的度:节点拥有的子树个数(或分支个数)。如A结点的度为6,B结点的度为0。
树的度:树中各个节点度的最大值。如该树的度就是A结点的度,为6。
叶子节点:度为0的节点。如B、C、H、I、K、L、M、N、P、Q都是树的叶子节点。
孩子:结点子树的根结点称为孩子。如E的孩子I和J。(所以叶子节点莫有孩子)
双亲:与孩子的定义对应,如E的孩子I和J,那么反过来,I和J的双亲就是E。
兄弟:同一双亲的孩子互相称为兄弟,比如P和Q。
祖先:从根结点到某结点的路径上的所以结点,都是该结点的祖先,如路径:A-E-J-Q,那么Q的节点的祖先就是A、E、J。
子孙:和祖先对应,以某结点作为根结点的所有子树的结点都是该结点的子孙,如路径:A-E-J-Q,那么A的子孙就是E、J、Q。
层次:从根开始为第一层,根的孩子为第二层,根的孩子的孩子为第三层,依次类推。可以理解为家族树中的辈份概念,所有该树有4层。
树的高度:或称为树的深度,表示树中结点的最大层次即为树的高度,例如该树的高度为4。(注意和树的度加以区分)。
结点的高度和深度:两个相反地概念,结点的高度是从叶子节点开启计算层数,而结点的深度是从根结点开始计算层数。例如B的高度为:3,深度为2。
堂兄弟:双亲在同一层的的结点互称为堂兄弟。
有序树:树中结点的子树从左往右是有次序的,不能交换,这样的树称为有序树。(类似兄弟有长幼之分,兄必须在左,第必须在右)。
无序树:与有序树对应,子树的的左右顺序可以交换的树。
丰满树:即理想平衡树,除了最底层外其他层都是满的(即叶子结点全部在最底层的树)。
森林:若干互不相交的树组成的集合称为森林。
树的存储结构为了方便讲解,我们使用下图作为案例树进行说明。
1、双亲存储结构