树
树的定义及特点
- 树的定义:
树是由n(n>=0)个结点组成的有限集合(记为T)。如果n=0,它是一棵空树,这是树的特例;如果n>0,n个结点中存在(有且仅有)一个结点作为树的根节点(root),其余节点可分为m(m>=0)个互不相交的有限集T1、T2、…、Tm,其中,每个子集本身又是一颗符合定义的树,称为根节点的子树。 - 树的特点:
树是一种非线性数据结构,具有以下特点:它的每一个结点可以有零个或多个后继结点,但是有且只有一个前驱结点(根节点除外);这些数据结点按分支关系组织起来,清晰地反映了数据元素之间的层次关系。可以看出,数据元素之间存在的关系是一对多的关系
树的逻辑结构表示方法
-
树形表示法:
用一个圆圈表示一个结点,圆圈内的符号代表该结点的数据信息,结点之间的关系通过连线表示。方向是从上向下,即连线的上方结点是下方结点的前趋结点,下方结点是上方结点的后继结点。

-
文氏图表示法:
每棵树对应一个圆圈,圆圈内包含根结点和子树的圆圈,同一个根结点下的各子树对应的圆圈是不能相交的。在用这种方法表示的树中,结点之间的关系是通过圆圈的包含来表示的。

-
凹入表示法:
每棵树对应着一个条形,子树的根对应着一个较短的条形,且树根在上,子树的根在下,同一个根下的各子树的根对应的条形长度是一样的。

-
括号表示法:
每棵树对应一个由根作为名字的表,表名放在表的左边,表是由在一个括号里的各子树对应的表组成的,各子树对应的表之间用逗号分开。在用这种方法表示的树中,结点之间的关系是通过括号的嵌套表示的。
A(B(E,F),C(G(J)),D(H,I(K,L,M)))
树的基本术语
- 结点的度与树的度:
树中每个结点的子树的个数称为该结点的度。树中各结点的度的最大值称为树的度,通常将度为m的树称为m次树。上面所示的是一棵3次树。 - 分支节点与叶子结点:
度不为0的结点称为非终端结点,又称分支结点。度为0的结点称为终端结点或叶子结点。在分支结点中,每个结点的分支数就是该结点的度。 - 路径和路径长度:
对于任意两个结点ki和kj,若树中存在一个结点序列ki、ki1、ki2、…、kj,使得序列中除了ki以外的任一结点都是其在序列中的前一个结点的后继结点,则称该结点序列为由ki到kj的一条路径,用结点所通过的结点序列(ki、ki1、ki2、…、kj)表示这条路径。
路径长度等于路径所通过的结点个数减1(即路径上分支数目) - 结点的层次和树高度:
树中的每个结点都处在一定的层次上。结点的层次从树根开始定义,根结点为一层,它的孩子结点为第二层,以此类推,一个节点所在的层次为其双亲结点所在的层次加1.树中结点的最大层次称为树的高度(或树的深度)。 - 有序树和无序树:
若树中各结点的子树是按照一定的次序从左到右排列的,且相对次序不能随意变换,称之为有序树,否则称之为无序树。 - 森林:
n(n>0)个互不相交的树的集合称为森林。
树的性质
- 树中的结点树等于所有结点的分支数加1
- 度为m的树中第i层上最多有mi-1个结点(i>=1)
推广:当一棵m次树的第i层上有mi-1个结点(i>=1)时,称该层是满的。若一棵m次树的所有叶子结点在同一层,且每一层都是满的,称之为满m次树。对于n个结点,构造m次树为满m次树或者接近满m次树,此时树的高度最小。 - 高度为h的m次树的结点最多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m−1mh−1
- 具有n个结点的m次树的最小高度为
logm(n(m-1))+1
树的基本运算
- 先根遍历
①访问根结点
②按照从左到右的次序先根遍历根结点的每一棵子树
ABEFCGJDHIKLM - 后根遍历
①按照从左到右的次序后根遍历根结点的每一棵子树
②访问根结点
EFBJGCHKLMIDA - 层次遍历
从根结点开始,按从上到下、从左到右的次序访问树中的每一个结点
ABCDEFGHIJKLM
2772

被折叠的 条评论
为什么被折叠?



