第4章树形结构2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章树形结构2

第4章 树形结构 本章基本内容与要求 树的基本概念及存储结构 二叉树概念 二叉树的存储结构 二叉树的操作 二叉排序树 哈夫曼树 要求:掌握上述所有内容 第一节 树的基本概念及存储结构 一、树的基本概念 是n(n =0)个结点的有限集T,当T不为空(空树)时,它有且只有一个特定的称为根的结点;基余的结点分为互不相交的子集,每个子集本身又是一棵树,称为其根的子树。 树的逻辑结构特征 树的逻辑结构特征是:树中任一结点都可以有零个或多个直接后继(孩子)结点,但至多只能有一个直接前趋(双亲)结点。 第二节 二叉树概念(Binary Tree) 一、 二叉树的定义 例 高度为h的完全二叉树至少有多少个结点?至多有多少个结点? 解:高度为h的完全二叉树至少有2(h-1)个结点,至多有2h-1个结点(也就是满二叉树)。 几种特殊形式的二叉树 平衡二叉树:左右子树的深度之差绝对值不超过1 树与二叉树的区别 .树中结点的最大度数没有限制,二叉树结点最大度数为2。 .树的结点无左、右之分,二叉树的结点子树有明确的左、右之分。 四、树、森林与二叉树之间的转换 在兄弟结点之间加一连线; 对每一个结点,除了与它的第一个孩子保持联系外,去除与其他孩子的联系; 以树根为轴心,将整棵树顺时针旋转45度 第三节、二叉树的存储结构 一、顺序存储结构 二、链式存储结构 三、二叉树的抽象数据类型 二叉树的遍历 练习 先序ABCDEFG 中序CBDAEGF 后序CDBGFEA 三、 二叉树基本应用的算法实现 练习 第五节 二叉排序树 二叉排序树或是空树,或具有下列性质 其左子树上所有结点的数据值均小于根结点的数据值; 其右子树上所有结点的数据值均大于或等于根结点的数据值; 左子树和右子树又各是一棵二叉排序树 二叉排序树的生成 对任意一组数据元素{R1,R2,…,Rn},若要生成一棵二叉排序树,过程为: 令R1为二叉排序树的根结点; 若R2R1,R2为R1的左子树根结点,否则, R2为R1的右子树根结点; R3,…Rn结点的插入方法同上. 二叉排序树的插入算法 生成二叉排序树的算法 btreenode *creat(int n) //返回一棵由n个节点组成的二叉排序树 { int x; btreenode *bst=NULL; for(int i=1;i=n;i++) { cinx; insert(bst,x); } return bst; } 删除二叉排序树上的结点 (1)*P是叶子,则直接删除*P,即将*P的双亲*parent 中指向*P的指针域置空即可。 (2)*P只有一个孩子*child (即左右子树有一为空) ,此时只需将*child和*p的双亲直接连接就可删去*p. 删除二叉排序树上的结点 (3)*p有两个孩子,则将操作转换成删除*p结点的中序前驱,在删去它之前把这个结点的数据复制到原来要删的结点位置上就完成了删除。 方法:要循着*p的左子树的根结点C向右一直找到结点S,要求S的右子树为空.然后将S的左子树改为结点Q的右子树,将S结点的数据域值取代P结点的数据域值。 删除二叉排序树上的结点(左右子树均非空) 第六节 哈夫曼树 树的带权路径长度最小的二叉树 树的路径长度 结点间的路径长度:一个结点到另一个结点之间的分支数目。 树的路径长度(PL):是从树根到树中每一结点的路径长度之和。 求树的路径长度 树的带权路径长度 权就是某结点被赋予的一个实数(这在实际应用中是有某种意义的,比如使用率,数值等)。 结点的带权路径长度:从该结点到树根之间的路径长度 × 该结点上的权值。 树的带权路径长度(WPL) :是树中叶子结点的带权路径长度之和。 求树的带权路径长度 哈夫曼树 对相同节点的二叉树,树的带权路径长度最小的二叉树就称为最优二叉树(即哈夫曼树)。 练习:给定一组权值w={2,3,8,4,45,7,9}构造关于w的哈夫曼树 练习:给定一组权值w={2,3,8,4,45,7,9}构造关于w的哈夫曼树 哈夫曼树的构造算法 哈夫曼树的构造算法 哈夫曼树的构造算法 哈夫曼树的构造算法 哈夫曼树的构造算法 哈夫曼编码 哈夫曼树的应用最广泛的是在编码技术上,它能够容易地求出给定字符集及其概率分布的最优前缀码。 哈夫曼编码 前缀码:要求在字符编码时任一字符的编码都不是其他字符编码的前缀,这种码称为前缀码。 哈夫曼编码的构造 只要画好了哈夫曼树, 按分支情况在左路径上写代码0,右路径上写代码1, 然后从上到下到叶结点的相应路径上的代码的序列就是该结点的最优前缀码。 回想一下 树的概念,包括与树有关的各个名词的意义 二叉树的定义 二叉树的性质 两种特殊情形的二叉树(完全二叉树和满二叉树的定义) 二叉树的遍历: 能够熟

文档评论(0)

liangyuehong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档