- 1、本文档共152页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第6章树
6.1树的概念
6.2二叉树
6.3二叉树的遍历
6.4线索二叉树
6.5树和森林
6.6二叉排序树
6.7哈夫曼树及其应用
习题6
6.1树的概念
树是一种常用的非线性结构。我们可以如下定义:
树(Tree)是n(n≥0)个结点的有限集合,且满足:
(1)若n=0,则称为空树;否则,有且仅有一个特定的结点
时被称为根;
(2)当n1时,其余结点被分成m(m0)个互不相交的子集
T1,T2,…,Tm,每个子集又是一棵树,并且称为根的子树。
这是递归形式的定义,即树的定义中又用到了树的概念。
这种递归定义很好地刻画了树的固有特性。在图6.1中,(a)是
只有根结点(n=1)的树;(b)是树的一般形式,其中A是根结点,
其余结点又分成3棵互不相交的子树T1、T2和T3,分别以结点B、
C和D为根结点。同样,在结点B和C的下面,又可以得到以E、
F和G为根结点的树。树的定义及例图6.1展示了一种按层次关
系组织的分支结构。树的根结点没有前趋,其直接后继处于同
一层次上。
树的表示还有其他一些形式,例如嵌套集合、广义表、目
录表示等,对于图6.1(b),这三种形式分别对应图6.2中的(a)、
(b)和(c)。
图6.1树的示例
图6.2树的其他表示
在树结构中,结点之间的关系可以用家族关系进行形象地
描述。下面列出树形结构的一些常用术语。
结点:包含一个数据元素及若干指向其子树根的分支。
结点的度:结点拥有的子树个数。
叶子(终端结点):度为0的结点。
非终端结点:度不为0的结点。
结点的层次:树中根结点的层次为1,根结点子树的根为
第2层,以此类推。
树的度:树中所有结点的度的最大值。
树的深度:树中结点层次的最大值。
孩子:结点子树的根称为这个结点的孩子。
双亲:结点的直接上层结点称为该结点的双亲。
兄弟:同一双亲的孩子互称为兄弟。
堂兄弟:双亲在同一层上的结点互称为堂兄弟。
路径:从某个结点到其子树中另一个结点之间的分支,构
成两个结点之间的路径。
子孙:以某结点为根的子树中的所有结点都被称为该结点
的子孙。
祖先:从根结点到该结点路径上的所有结点。
森林:m(m≥0)棵互不相交的树的集合。
有序树、无序树:如果树中每棵子树从左向右的排列拥有
一定的顺序,不得互换,则称为有序树,否则称为无序树。在
有序树中,最左边的子树的根称为第一个孩子,最右边的子树
的根称为最后一个孩子。
尽管树的存储结构可以有多种形式,但主要使用的存储结
构仍然是顺序存储和链式存储。顺序存储时,必须采用某种方
式的线性化方法,使树形结构的结点成为一个线性序列,然后
才可以存储;链式存储时,可以采用多指针域的结点形式,每
一个指针域指向一棵子树的根结点。
6.2二叉树
6.2.1二叉树的定义
二叉树是另一种树形结构。它与树形结构的区别是:每个
结点最多有两棵子树;子树有左右之分。
利用递归的形式可以得到二叉树的定义:二叉树是n(n≥0)
个结点的有限集合。二叉树或为空(n=0),或是由一个根结点
加上两棵分别称为左右子树的,互不相交的二叉树组成。
根据定义,二叉树可以有5种基本形态,如图6.3所示。
图6.3二叉树的5种基本形态
6.2.2二叉树的性质
二叉树具有下列5个重要的性质。
性质1:在二叉树的第i层上最多有2i-1个结点(i≥1)。
证明:可用数学归纳法予以证明。
当i=1时,有2i-1=20=1,显然第一层上只有一个根结点,故
命题成立。
设当i=k时成立,即第k层上至多有2k-1个结点。
当i=k+1时,由于二叉树的每个结点至多有两个孩子,所
以第k+1层上至多有2×2k-1=2k个结点,故命题成立。
性质2:深度为k的二叉树最多有2k-1个结点(k≥1)。
由性质1可得,1至k层各层最多的结点个数分别为:20,21,
22,…,2k-1。该等比数列之和为
k
2i12k1(6-1)
i1
性质3:对任意一棵二叉树T,如果其终端结点个数为n0,
度为2的结点个数为n2,则n0=n2+1。
证明:设度为1的结点数为n1,则一棵二叉树的结点总数
为
n =
文档评论(0)