----------树的定义
树是 N (N >= 0 )个结点的有限集合,N = 0 时,称为空树,这是一种特殊情况。在任意一棵非空树中
应满足:
1) 有且仅有一个特定的称为根的结点。
2)当 N > 1 时,其余结点可分为 m ( m > 0)个互不相交的有限集合T1 , T2 , T3 , .... Tm ,其中每一个
集合本身又是一棵树,并且称为根结点的子树。
----------------------------------------------------------------------------------------------------------------------------
显然树的定义是递归的,是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下
两个特点:
1)树的根结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点。
2)树中所有结点可以有零个或多个后继结点。
---------------------------------------------------------------------------------------------------------------------------------
树适合于表示具有层次结构的数据。树中的某个结点(除根结点外)最多只和上一层的一个结点(即
其父结点)有直接关系,根结点没有直接上层结点。因此在 n 个结点的树中有 n -1 条边 。而树中每个结点
与其下一层的零个或多个结点(即其子女结点)有直接关系。
----------基本术语
下面结合下图中的树来说明一些基本术语和概念:
》》 考虑结点 K 。 根 A 到结点 K 的唯一路径上的任意结点,称为结点 K 的祖先结点。
如结点 B 是结点 K 的祖先结点,而结点 K 是结点 B 的子孙结点。
路径上最接近结点 K 的结点 E 称为结点 K 的双亲结点,而结点 K 为结点 E 的孩子结点。
根 A 是树中唯一没有双亲的结点。
有相同双亲的结点称为兄弟结点,如结点 K 和结点 L 有相同的双亲结点,即 K 和 L 为兄弟结点。
》》 树中一个结点的子结点个数称为该结点的度。
树中结点的最大度数称为树的度。
例如:结点 B 的度为 2 ; 结点 D 的度为 3 , 树的度为 3 。
》》 度大于 0 的结点称为 分支结点(又称为非终端结点) ;
度为 0 的(没有子女结点)的结点称为叶子结点(又称为终端结点)
在分支结点中,每个结点的分支树就是该结点的度。
》》 结点的深度、高度和层次
结点的层次从树根开始定义,根结点为第 1 层(有些教材中将根结点定义为第 0 层),它的子结点为第
2 层,依次类推。
结点的深度是从根结点开始自顶向下逐层累加的。
结点的高度是从叶结点开始自底向上逐层累加的。
树的高度(又称为深度)是树中结点的最大层数。上图中树的高度为 4 。
》》 有序树和无序树:
树中结点的子树从左到右是有次序的,不能交换,这样的树叫做有序树。在有序树中,一个结点其子结点
按从左到右顺序出现是有关联的。反之则称为无序树。
在上图中,若将子结点位置互换,则变成一颗不同的树。
》》路径和路径长度:
树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的;
路径长度是路径上所经过的边的个数。
注意:由于树中分支是有向的,即从双亲结点指向孩子结点,所以树中的路径是从上向下的,同一个双亲
结点的两个孩子结点之间不存在路径。
》》 森林:
森林是 m ( m >= 0) 棵互不相交的树的集合。森林的概念与树的概念十分相近,因为只要把树的根结点
删除就成了森林。反之,只要给 n 棵独立的树加上一个结点,并把这 n 棵树作为该结点的子树,则森林就变
成了树。
----------树的性质
树具有如下最基本的性质:
》》 树中的结点数等于所有结点的度数加1 。
》》 度为 m 的树中第 i 层上至多有 个结点( i >= 1)。
》》 高度为 h 的 m 叉树至多有 个结点。
》》 具有 n 个结点的 m 叉树的最小高度为 。