- 1、本文档共170页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 树和二叉树
7.1 树的基本概念
7.2 二叉树概念和性质
7.3 二叉树存储结构
7.4 二叉树的遍历
7.5 二叉树的基本运算及其实现
7.6 二叉树的构造
7.8 哈夫曼树
7.7 线索二叉树
本章小结
7.1.1 树的定义
形式化定义:
树:T={D,R}。D是包含n个节点的有穷集合(n≥0)。当n=0时为空树,否则关系R满足以下条件:
有且仅有一个节点d0∈D,它对于关系R来说没有前驱节点,节点d0称作树的根节点。
除节点d0外,D中的每个节点对于关系R来说都有且仅有一个前驱节点。
D中每个节点对于关系R来说可以有零个或多个后继节点。
7.1 树的基本概念
递归定义:
树是由n(n≥0)个节点组成的有限集合(记为T)。其中:
如果n=0,它是一棵空树,这是树的特例;
如果n0,这n个节点中存在(有仅存在)一个节点作为树的根节点,简称为根节点(root),其余节点可分为m (m0)个互不相交的有限集T1,T2,…,Tm,其中每一棵子集本身又是一棵符合本定义的树,称为根root的子树。
root
T1
T2
Tm
…
7.1.2 树的表示
(1)树形表示法。这是树的最基本的表示,使用一棵倒置的树表示树结构,非常直观和形象。下图就是采用这种表示法。
A
B
C
D
E
F
G
J
H
I
K
L
M
逻辑结构表示1
(2)文氏图表示法。使用集合以及集合的包含关系描述树结构。下图就是树的文氏图表示法。
逻辑结构表示2
(3)凹入表示法。使用线段的伸缩描述树结构。下图是树的凹入表示法。
逻辑结构表示3
(4)括号表示法。将树的根节点写在括号的左边,除根节点之外的其余节点写在括号中并用逗号间隔来描述树结构。下图是树的括号表示法。
思考题:
树的逻辑结构定义?适合表示什么类型的数据?
7.1.3 树的基本术语
1. 节点的度与树的度:树中某个节点的子树的个数称为该节点的度。树中各节点的度的最大值称为树的度,通常将度为m的树称为m次树。
2. 分支节点与叶节点:度不为零的节点称为非终端节点,又叫分支节点。度为零的节点称为终端节点或叶节点。在分支节点中,每个节点的分支数就是该节点的度。如对于度为1的节点,其分支数为1,被称为单分支节点;对于度为2的节点,其分支数为2,被称为双分支节点,其余类推。
度为3
度为2
3. 路径与路径长度:对于任意两个节点di和dj,若树中存在一个节点序列di,di1,di2,…,din,dj,使得序列中除di外的任一节点都是其在序列中的前一个节点的后继,则称该节点序列为由di到dj的一条路径,用路径所通过的节点序列(di,di1,di2,…,dj)表示这条路径。
路径长度等于路径所通过的节点数目减1(即路径上分支数目)。
A
B
C
D
E
F
G
J
H
I
K
L
M
A到K的路径为A,D,I,K,
其长度为3
4. 孩子节点、双亲节点和兄弟节点:在一棵树中,每个节点的后继,被称作该节点的孩子节点(或子女节点)。相应地,该节点被称作孩子节点的双亲节点(或父母节点)。
具有同一双亲的孩子节点互为兄弟节点。进一步推广这些关系,可以把每个节点的所有子树中的节点称为该节点的子孙节点。
从树根节点到达该节点的路径上经过的所有节点被称作该节点的祖先节点。
5. 节点的层次和树的高度:树中的每个节点都处在一定的层次上。节点的层次从树根开始定义,根节点为第1层,它的孩子节点为第2层,以此类推,一个节点所在的层次为其双亲节点所在的层次加1。树中节点的最大层次称为树的高度(或树的深度)。
6. 有序树和无序树:若树中各节点的子树是按照一定的次序从左向右安排的,且相对次序是不能随意变换的,则称为有序树,否则称为无序树。
1
2
3
4
7. 森林:n(n>0)个互不相交的树的集合称为森林。森林的概念与树的概念十分相近,因为只要把树的根节点删去就成了森林。反之,只要给n棵独立的树加上一个节点,并把这n棵树作为该节点的子树,则森林就变成了树。
7.1.4 树的性质
性质1 树中的节点数等于所有节点的度数加1。
证明:根据树的定义,在一棵树中,除树根节点外,每个节点有且仅有一个前驱节点。也就是说,每个节点与指向它的一个分支一一对应,所以除树根之外的节点数等于所有节点的分支数(度数),从而可得树中的节点数等于所有节点的度数加1。
度之和=分支数
分支数=n-1
所以,n=度之和+1
求解树的节点个数问题:对于度为m的树,在n、n0、n1、n2、…、nm中只有两个参
文档评论(0)