- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]ch5
第5章 树和二叉树 5.1 树的基本定义 5.2 二叉树 5.3 树和森林 5.4 树的应用 5.5 应用举例分析 本章要点 树的各种术语 二叉树的性质、存储方式、遍历 树的存储、树和森林的转换、遍历 哈夫曼树和哈夫曼编码 线索二叉树的基本概念 本章难点 二叉树的性质、存储方式和遍历 哈夫曼树和哈夫曼编码 线索二叉树的基本概念 5.1 树的基本定义 5.1.1 树的定义 树(Tree)是n(n≥0)个有限数据元素的集合。当 n=0时,称这棵树为空树。在任意一棵非空树T中: (1)有且仅有一个特殊的数据元素称为树的根结 点,根结点没有前驱结点。 (2)若n1,除根结点之外的其余数据元素被分成 m (m0)个互不相交的集合T1,T2,… , Tm,其中每一个集合Ti (1≤i≤m)本身又是 一棵树。树T1,T2,… ,Tm称为这个根结 点的子树。 5.1 树的基本定义 5.1.2 基本术语 结点的度和树的度 树的结点包括一个数据元素及若干指向其子树的分支。结点拥有的子树个数称为结点的度(Degree)。树中所有结点的度的最大值为该树的度。 分支节点和叶子节点 度为0的结点称为叶子结点(Leaf)或终端结点。度不为0的结点称为非叶子结点或非终端结点。 5.1 树的基本定义 孩子结点、双亲结点和兄弟结点 结点子树的根称为该结点的孩子结点(Child),该结点是其孩子结点的双亲结点(Parent)。具有同一双亲结点的孩子结点之间互称为兄弟(Sibling)。某结点的祖先是指从根结点到该结点所经分支上的所有结点。以某结点为根的子树中的所有结点都称为该结点的子孙。 5.1 树的基本定义 结点的层数和树的深度 结点的层次(Level)从根开始算起,根为第一层,根的孩子为第二层,某结点所在的层从根开始向下计算。在树的同一层上而双亲结点不同的结点互为堂兄弟。树中结点的最大层次称为树的深度(Depth)或高度。 有序树和无序树 如果将树中结点的各个子树看成从左至右是有序的(即不能互换),则称该树为有序树,否则称为无序树。 5.1 树的基本定义 当用树来描述家谱时,应将树看成是有序树, 有序树中某结点最左边子树的根称为该结点的第 一个孩子,最右边子树的根称为最后一个孩子。 当用树来描述某单位的行政组织结构时,可将树 看成是无序树。 森林 森林(Forest)是m(m≥0)棵互不相交的树的集合,树和森林的概念很密切,删去一棵树的根,就得到一个森林。 5.2 二叉树 5.2.1 二叉树的定义和基本操作 1. 二叉树的基本概念 二叉树(Binary Tree)是n(n≥0)个结点的有限集合,当n=0时为空集,称为空二叉树;当n≠0时,二叉树由一个根结点及两棵互不相交、分别称为左子树和右子树的二叉树组成。二叉树和树在概念上相同的是都有一个且仅有一个根结点,根结点无前驱结点,叶子结点无后继结点。不相同的是二叉树中每个结点的度小于等于2,而且二叉树的子树有左右子树之分。 5.2 二叉树 2. 二叉树的基本操作 二叉树的基本操作通常有以下几种: (1)INITIATE(BT) 建立一棵空二叉树。 (2)CREATE(BT,LBT,RBT) 生成一棵以BT为根结点的数据域信息,以二叉树LBT和RBT为左子树和右子树的二叉树。 (3)INSERTL(BT,X,PARENT) 将数据域信息为X的结点插入到二叉树BT中作为结点PARENT的左孩子结点。如果结点PARENT原来有左孩子结点,则将结点PARENT原来的左孩子结点作为结点X的左孩子结点。 5.2 二叉树 (4)INSERTR(BT,X,PARENT) 将数据域信息为X的结点插入到二叉树BT中作为结点PARENT的右孩子结点。如果结点PARENT原来有右孩子结点,则将结点PARENT原来的右孩子结点作为结点X的右孩子结点。 (5)TREEDEPTH(BT) 求二叉树的深度。返回二叉树BT的深度。 (6)DELETEL(BT,PARENT) 在二叉树BT中删除结点PARENT的左子树。 (7)DELETER(BT,PARENT) 在二叉树BT中删除结点PARENT的右子树。 (8)SEARCH(BT,X) 在二叉树BT中查找数据元素X。 5.2 二叉树 5.2.2 二叉树的性质 性质1 二叉树第i层上的结点数目至多为
文档评论(0)