一、树的定义
树是n(n≥0)个结点的有限集合,n=0时,称为空树。在任意一颗非空树中应满足:
(1)有且仅有一个特定的称为根的结点。
(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集合T1,T2…Tm,其中每个集合本身又是一棵树,并且称为根结点的子树。
从这里我们可以看出,树的定义是递归的,其具有以下两个特点:
(1)树的根结点没有前驱结点,除根结点外的所有结点有且只有一个前驱结点。
(2)树中所有结点可以有零个或多个后继结点。
树适合表示具有层次结构的数据。树中的某个结点(除根结点)最多只和上一层的一个结点(父结点)有直接关系,根结点没有。因此在n个结点的树中有n-1条边,而树中每个结点与其下一层的零个或多个结点(子结点)有直接关系
二、基本术语
结合上图说明:
1.看结点K!根结点A到结点K的唯一路径上的任意结点,称为结点K的祖先结点。如B是K的祖先结点,K是B的子孙结点。路径上最接近结点K的结点E称为K的父节点(双亲结点),K为结点E的孩子结点。根结点无父节点。有相同父节点的结点称为兄弟结点,例如K和L。
2.树中一个结点的子结点个数称为该结点的度,树中结点的最大度数称为树的度。如结点B的度为2,结点D的度为3,树的度为3。
3.度大于0的结点称为分支结点;度为0的结点称为叶子结点。每个结点分枝数就是度数。
4.结点的深度、高度、层次
结点的层次从树根开始定义,根结点为第1层,它的子结点为第2层。
结点的深度是从根结点开始自顶向下逐层累加的;
结点的高度是从叶结点开始自底向上逐层累加的;
树的高度(深度)是树中结点的最大层数。如图中树的高度为4。
5.有序树和无序树。树中结点的子树从左到右是有次序的,不能交换的称为有序树。反之称为无序树。
6.路径和路径长度。树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
注意:树中的分支是有方向的,从父结点到子结点,所以树中的路径是自上而下的,兄弟结点之间不存在路径。
7.森林。森林是m(m≥0)棵互不相交的树的集合。森林的概念与树的概念十分相近,因为把树的根结点删去就成了森林。反之,只要给n棵独立的树加上一个结点,并把这n棵树作为该结点的子树,则森林就变成了树。
三、树的性质
1.树中的结点数等于所有结点的度数加1。这个比较好理解,就是每个结点的拓展(度数)加根节点。
2.度为m的树中第i层上至多有个结点(i≥1)。这个也比较好理解,因为从第1层开始计算,第二层最多有m个结点,第三层最多有
个结点…第i层最多有
个结点。
3.高度为h的m叉树至多有个结点;最少有m+1个结点(两层)。
4.具有n个结点的m叉树的最小高度为。推导思路是如果m叉树的高度最小,则每个结点度数都为m。