树型结构是一类重要的非线性结构。树是以分支关系定义的层次结构,它非常类似于自然界中的树。
树型结构在客观世界中大量存在,例如家谱、行政组织机构都可用树形象地表示。树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程,等等。
树的定义和基本概念
定义:树(Tree)是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:
(1)有且仅有一个特定的称为根(Root)的结点;
(2)其余的结点可分为m(m>=0)个互不相交的子集T1,T2,T3…Tm,其中每个子集又是一棵树,并称其为子树(Subtree)。
树从定义上就是一种递归数据结构
-
树的逻辑表示
-
树形表示法
用一个圆圈表示一个结点,圆圈内的括号代表该结点的数据信息,结点之间的关系通过连线表示。直观形象是一个倒置的树。
-
文氏图表示法
每棵树对应一个圆圈,圆圈内包含根结点和子树的圆圈,同一个根结点下的各子树的圆圈是不能相交的。在这种表示方法中,结点之间的关系通过圆圈的包含来表示。
-
凹入表示法
每棵树对应一个条形,子树的根对应着一个较短的条形,且树根在上,子树的根在下,同一个根下的各子树的根也对应的条形长度是一样的。
-
括号表示法
每棵树对应一个由根作为名字的表,表名放在表的左边,表是由在一个括号里的各子树对应的表组成,各个子树对应的表之间用逗号分开。在这种方法表示的树中,结点之间的关系通过括号的嵌套表示。
Eg6-1
-
树的基本术语
结点(node) ——表示树中的元素,包括数据项及若干指向其子树的分支
结点的度(degree) ——结点拥有的子树数
树的度 ——一棵树中最大的结点度数
叶子(leaf)结点 ——度为0的结点
分支结点——度不为0的结点
孩子(child) ——结点子树的根称为该结点的孩子
双亲(parents) ——孩子结点的上层结点叫该结点的双亲
兄弟(sibling) ——同一双亲的孩子
结点的层次(level) ——从根结点算起,根为第一层,它的孩子为第二层……直到叶子结点
深度(depth) ——树中结点的最大层次数
路径——从树中某结点Ni出发,能够“自上而下”通过树中结点到达结点Nj,则称Ni到Nj存在一条路径,用所通过的结点序列表示,路径长度等于这两个结点之间的分支数。
树的路径长度——从根到每个结点的路径长度之和。
有序树——树中各结点的子树从左至右是有次序的,不能互换。否则,称为无序树。
森林(forest)——m(m>=0)棵互不相交的树的集合
-
树的性质
性质1: 树中的结点数等于所有结点的度数加1
证明:根据树的定义,在一棵树中,除了根结点外,每个结点有且仅有一个直接前驱结点,也就是说,每个结点与指向他的一个分支一一对应,所以除去树的根结点之外的结点数刚好等于所有结点的分支数(度数),从而可得到树中的结点数等于所有结点的度数+1。
Eg6-2 若一棵三次树中度为3的结点为2个,度为2的结点为1个,度为1的结点为2个,则该三次树中总的结点个数和度为0的结点个数分别是多少?
解答:
设该三次树中总结点数个数、度为0的结点个数、度为1的结点个数、度为2的结点个数和度为3的结点个数分别为n,n0,n1,n2和n3,则根据题意,n3=2,n2=1,n1=2
根据性质1有 n=0*n0+1*n1+2*n2+3*n3+1=1*2+2*1+3*2+1=11
又 n=n0+n1+n2+n3,即n0=n-n1-n2-n3=11-2-1-3=6
性质2:度为m的树中第i层上至多有m^(i-1)个结点(i>=1)
证明:(数学归纳法)
i=1时,树的第一层只有根结点,代入m^(i-1) =1,命题成立。
假设第i-1层,命题成立,即度为m的树中第i-1层上至多有m^(i-2)个结点。根据树的度的定义,度为m的树中每个结点至多有m个孩子结点,所以第i层的结点数至多为第i-1层的m倍,即m* m^(i-2) = m^(i-1) ,命题成立。
推论:当一个m次树的第i层有mi-1结点时,称该层是满的,若一棵m次树的每一层都是满的,则称为满m次树。
①满m次树是所有相同高度的m次树中结点总数最多的树
②对于n个结点,构造m次树为满m次树或者接近满m次树,此时树的高度最小。
性质3:高度为h的m次树至多有(m^h-1)/(m-1)个结点
证明:由性质2,第i层上最多结点数为m^(i-1) ,高度为h的m次树,当每一层都达到最多结点时,整个m次树具有的结点最多。所以,整个树的最多结点 = 每一层最多结点树之和
= m^0+m^1+m^2+…+m^(h-1)
=(m^h-1)/(m-1)
Eg6-3 一棵高度为3的满二叉树,其结点数为 (2^3)/(2-1)=7
性质4:具有n个结点的m次树的最小高度为
证明:
设具有n个结点的m次树的高度为h,若在该树中前h-1层都是满的,则根据性质3,前h-1层的结点数为m^(h-1)/(m-1),而第h层的结点数可能满也可能不满,则存在这样的关系式:
Eg6-4 N个叶子结点的三次树的最小高度是多少?
解答:h=
解答:
根据树性质2的推论,最小高度的三次树应该为满3次树或接近满三次树。当为满三次树时,第h层的结点为3^(h-1)个(叶子结点),当为接近满三次树时,第h-1层的结点最少为3^(h-2)-1个,第h层有一个叶子结点,则存在这样的等式