数据结构教程六树.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文档。上传文档
查看更多
数据结构教程六树

6.5 二叉树的应用 6.5.1 二叉树的基本应用 4.查找数据元素 在bt为根结点指针的二叉树中查找数据元素x。查找成功时返回该结点的指针;查找失败时返回空指针。 (1)基本思想 先判别二叉树的根结点是否与x相等,若相等则返回,否则递归在bt-lchild为根结点指针的二叉树中查找数据元素x;递归在bt-rchild为根结点指针的二叉树中查找数据元素x。 下一页 上一页 6.5 二叉树的应用 6.5.1 二叉树的基本应用 4.查找数据元素 (2)算法 BT Search(BT *T, datatype x) { BT *p; if(T-data==x) return T; //若查找根节点成功,则返回。否则,分别在左、右子树查找 if(T-lchild!=NULL) return(Search(T-lchild),x)); //在T-lchild为根节点指针的二叉树中查找数据元素x if(T-rchild!=NULL) return(Search(T-rchild),x)); //在T-rchild为根节点指针的二叉树中查找数据元素x return NULL;//查找失败返回 } 下一页 上一页 6.5 二叉树的应用 6.5.2 标识符树与表达 将算术表达式用二叉树来表示,称为标识符树,也称为二叉表示树。 1.标识符树的特点 (1)运算对象(标识符)都是叶结点; (2)运算符都是根结点。 2.从表达式产生标识符树的方法 (1)读入表达式的一部分产生相应二叉树后,再读入运算符时,运算符与二叉树根结点的运算符比较优先级的高低。 (2)遇到括号,先使括号内的表达式产生一棵二叉树,再把它的根结点连到前面已产生的二叉树根结点的右子树上去; (3)单日运算符+、-,加运算对象θ(表示0)。 上一页 返 回 6.6 哈夫曼树及其应用 哈夫曼(Hafftman)树,是一种带权路径长度最小的二叉树,也称最优二叉树。 6.6.1 哈夫曼树的引入 1.几个术语 (1)路径长度 (2)树的路径长度 (3)结点的带权路径长度 (4)树的带权路径长度 (5)最优二叉树 下一页 6.6 哈夫曼树及其应用 6.6.1 哈夫曼树的引入 2.如何求树的带权路径长度 设二叉树具有n个带权值的叶结点,那么从根结点到各个叶结点的路径长度与相应结点权值的乘积之和叫做二叉树的带权路径长度(WPL),记为 其中, Wk为第k个叶结点的权值; Lk为第k个叶结点到根结点的路径长度。 下一页 上一页 6.6 哈夫曼树及其应用 6.6.2 哈夫曼树的建立 1.哈夫曼树构成的基本思想 (1)由给定的n个权值{W1,W2,...,Wn},构造n棵只有一个叶结点的二叉树,从而得到一个二叉树的集合 F={T1,T2,...,Tn} (2)在F中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构造一棵新的二叉树,这棵新的二叉树根结点的权值为其左、右子树根结点权值之和; (3)在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树加人到集合F中; (4)重复(2) , (3)两步,当F中只剩下一棵二叉树时,这棵二叉树便是所要建立的哈夫曼树。 下一页 上一页 6.6 哈夫曼树及其应用 6.6.3 哈夫曼编码 1.什么是哈夫编码 在数据通信中,经常需要将传送的文字转换成由二进制字符0和1组成的二进制代码,称为编码。 如果在编码时考虑字符出现的频率,让出现频率高的字符采用尽可能短的编码,出现频率低的字符采用稍长的编码,构造一种不等长编码,则电文的代码就可能更短。哈夫曼编码是一种用于构造使电文的编码总长最短的编码方案。 下一页 上一页 6.6 哈夫曼树及其应用 6.6.3 哈夫曼编码 2.求哈夫曼编码的方法 (1)构造哈夫曼树 设需要编码的字符集合为{d1,d2,...,dn},它们在电文中出现的次数集合为{w1,w2,...,wn},以d1,d2,...,dn作为叶结点,w1,w2,...,wn作为它们的权值,构造一棵哈夫曼树。 (2)在哈夫曼树上求叶结点的编码 规定哈夫曼树中的左分支代表0,右分支代表1,则从根结点到每个叶结点所经过的路径分支组成的0和1的序列便为该结点对应字符的编码,如图6-33(b)所示的编码为: A=11;B=01;C=00;D=100;E=1011;F=1010。 下一页 上一页 6.6 哈夫曼树及其应用 6.6.3 哈夫曼编码

文档评论(0)

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

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

1亿VIP精品文档

相关文档