- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CHAP006_树
树的基本概念 定义:树(tree)是n(n0)个结点的有限集T,其中: 有且仅有一个特定的结点,称为树的根(root) 当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree) 特点: 树中至少有一个结点——根 树中各子树是互不相交的集合 结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支 结点的度(degree)——结点拥有的子树数 树的度——一棵树中最大的结点度数 叶子(leaf)——度为0的结点 孩子(child)——结点子树的根称为该结点的孩子 双亲(parents)——孩子结点的上层结点 兄弟(sibling)——同一双亲的孩子 结点的层次(level)——从根结点算起,根为第一层,它的孩子为第二层…… 树的深度(depth)——树中结点的最大层次数 定义:二叉树是n(n?0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成 特点 每个结点至多有二棵子树(即不存在度大于2的结点) 二叉树的子树有左右之分,且其次序不能任意颠倒 基本形态 二叉树性质 性质1: 二叉树性质 满二叉树 定义: 几种特殊形式的二叉树 几种特殊形式的二叉树 几种特殊形式的二叉树 性质5:如果对一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1?i?n),有: (1)如果i=1,则结点i是二叉树的根,无双亲; 如果i1,则其双亲是?i/2? (2)如果2in,则结点i无左孩子; 否则,2i是其左孩子 (3)如果2i+1n,则结点i无右孩子; 否则,2i+1是其右孩子 树与二叉树的区别 A. 树中结点的最大度数没有限制,二叉树结点最大度数为2。 B. 树的结点无左、右之分,二叉树的结点子树有明确的左、右之分。 实现:按满二叉树的结点层次编号,依次存放二叉树中的数据元素 特点: 结点间关系蕴含在其存储位置中 浪费空间,适于存满二叉树和完全二叉树 6.4 二叉树的遍历 一、问题的提出 常常要在树中查找具有某种特征的结点,或对树中全部结点进行某种处理,这就提出了遍历二叉树的问题。 即顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。 “访问”的含义可以很广,如:输出结点的信息等。 二叉树的遍历 “遍历”是任何类型均有的操作,对线性结构而言,只有一条搜索路径(因为每个结点均只有一个后继),故不需要另加讨论。 而二叉树是非线性结构,每个结点有两个后继,则存在如何遍历即按什么样的搜索路径遍历的问题。 4、建立二叉树的存储结构 不同的定义方法相应有不同的存储结构的建立算法 6.5线索二叉树 何谓线索二叉树? 如何建立线索链表? 线索链表的遍历算法 二、如何建立线索链表? 线索化的实质是将二叉链表的空指针改为指向前驱或后继的线索。 而前驱或后继的信息只有在遍历时才能得到,因此线索化的过程即为在遍历过程中修改空指针的过程。 遍历过程中,附设指针pre, 并始终保持指针pre指向当前访问的、指针p所指结点的前驱。 6.5 树和森林 孩子链表:每个结点的孩子结点用单链表存储,再用含n个元素的结构数组指向每个孩子链表。 三、孩子兄弟表示法(二叉树表示法) 实现:用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点 6.5.2 树与二叉树转换 森林转换成二叉树 将各棵树分别转换成二叉树 将每棵树的根结点用线相连 以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构 6.5.4 树和森林的遍历 6.6 哈夫曼树与哈夫曼编码 最优树的定义 6.7 二叉排序树 二叉排序树的插入 插入原则: 若二叉排序树为空,则插入结点应为新的根结点; 否则,继续在其左、右子树上查找,直至某个叶子结点的左子树或右子树为空为止, 则插入结点应为该叶子结点的左孩子或右孩子 二叉排序树生成: 从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树 插入算法 小结 1. 熟练掌握二叉树的结构特性,了解相应的证明方法。 2. 熟悉二叉树的各种存储结构的特点及适用范围。 3. 遍历二叉树是二叉树各种操作的基础。 实现二叉树遍历的具体算法与所采用的存储结构有关。 掌握各种遍历策略的递归算法,灵活运用遍历算法实现二叉树的其它操作。 层次遍历是按另一种搜索策略进行的遍历。 小结 4. 理解二叉树线索化的实质是建立结点与其在相应序列中的前驱或后继之间的直接联系, 熟练掌握二叉树的线索化过程以及在中序线索化树上找给定结点的前驱和后继的方法。 二叉树的线索化过程是基于对二叉树进行遍历,而线索二叉树上的线索又为相应的
您可能关注的文档
最近下载
- 2025-2030中国漱口水行业发展现状及发展趋势与投资风险分析.docx VIP
- GB50168-2018 电气装置安装工程 电缆线路施工及验收标准.docx VIP
- CRIC-2024年泉州市区房地产年报.ppt
- 公路工程设计符合性评价意见.docx VIP
- 河北省学业水平测试音乐试题.pdf VIP
- IEC 60034-1 2017 旋转电机 定额和性能 中文版.pdf VIP
- 鄂教版七年级信息技术教案七年级上学期全册教案(1至16课).doc VIP
- 2025年度最新村后备干部考试必备题库(含答案).docx VIP
- TCNSS-个性化营养评估技术指南.pdf VIP
- 物联网产业园运营管理方案.docx
文档评论(0)