版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
将树转换成二叉树加线:在兄弟之间加一连线抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系旋转:以树的根结点为轴心,将整树顺时针转45°ABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHI树转换成的二叉树其右子树一定为空将二叉树转换成树加线:若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子,……沿分支找到的所有右孩子,都与p的双亲用线连起来抹线:抹掉原二叉树中双亲与右孩子之间的连线调整:将结点按层次排列,形成树结构ABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHIABCDEFGHI森林转换成二叉树将各棵树分别转换成二叉树,形成有若干二叉树的森林按森林中树的先后次序,依次将后边一棵二叉树作为前边一棵二叉树根结点的右子树,这样整个森林就成了一棵二叉树ABCDEFGHIJABCDEFGHIJABCDEFABCDEFGHIJABCDEFGHIJ二叉树转换成森林抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树还原:将孤立的二叉树还原成树ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ树和森林的遍历树的遍历遍历——按一定规律走遍树的各个顶点,且使每一顶点仅被访问一次,即找一个完整而有规律的走法,以得到树中所有结点的一个线性排列常用方法按层次遍历(广度优先遍历):先访问第一层上的结点,然后依次遍历第二层,
……第n层的结点树的前序遍历(树的先根遍历)若树非空,则树的前序遍历顺序如下:①
访问树的根结点;②
前序遍历根的第一棵子树;③
前序遍历根的其余子树。(2)树的后序遍历(树的后根遍历)若树非空,则树的前序遍历顺序如下:①
后序遍历根的第一棵子树;②
后序遍历根的其他子树;③
访问树的根结点。ABCDEFGHIJKLMNO先序遍历:后序遍历:层次遍历:ABEFIGCDHJKLNOMEIFGBCJKNOLMHDAABCDEFGHIJKLMNO讨论:若采用“先转换,后遍历”方式,结果是否一样?abdec先序遍历:后序遍历:中序遍历:decbaabdecabcdebdcea1.
树的先序遍历与二叉树的先序遍历相同;2.树的后序遍历相当于对应二叉树的中序遍历;3.树没有中序遍历,因为子树无左右之分。结论:先序遍历若森林为空,返回;访问森林中第一棵树的根结点;先序遍历第一棵树中根结点的子树森林;先序遍历除去第一棵树之后剩余的树构成的森林。后序遍历若森林为空,返回;后序遍历森林中第一棵树的根结点的子树森林;后序遍历除去第一棵树之后剩余的树构成的森林。访问第一棵树的根结点;森林的遍历ABCDEFGHJI讨论:若采用“先转换,后遍历”方式,结果是否相同?例如:ABCDEFGHJI先序序列:后序序列:ABCDEFGHIJBCDAFEHJIGABCDEFGHJI先序序列:中序序列:ABCDEFGHIJBCDAFEHJIG1.森林的先序遍历与对应二叉树的先序遍历相同;2.森林的后序遍历相当于对应二叉树的中序遍历;结论:当以二叉链表做树的存储结构时,树的先根序列和后根序列可借用二叉树的先序遍历和中序遍历的算法实现之;对于森林也一样。一、基本术语1.路径和路径长度在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路,称为路径。通路中分支的数目称为路径长度。从树的根结点到树中每个结点的路径长度之和称为树的路径长度2.结点的权及带权路径长度若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。6.6哈夫曼树3.树的带权路径长度树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为:WPL=其中n为叶子结点数目,Wi为第i个叶子结点的权值,Li
为第i个叶子结点的路径长度。二、构造哈夫曼树1.哈夫曼树的定义在一棵二叉树中,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffmantree)。=W1L1+W2L2+…..+WnLn阮江南例有4个结点,权值分别为7,5,2,4,构造有4个叶子结点的二叉树abcd7524WPL=7*2+5*2+2*2+4*2=36dcab2475WPL=7*3+5*3+2*1+4*2=46abcd7524WPL=7*1+5*2+2*3+4*3=352.哈夫曼树的构造假设有n个权值,则构造出的哈夫曼树有n个叶子结点。n个权值分别设为w1,w2,…,wn,则哈夫曼树的构造规则为:将w1,w2,…,wn按递增次序排列成有n棵树的森林
(每棵树仅有一个结点);(2)在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;(3)从森林中删除选取的两棵树,并将新树加入森林;(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为我们所求得的哈夫曼树。下面给出哈夫曼树的构造过程,假设给定的叶子结点的权分别为1,5,7,3,则构造哈夫曼树过程如图7-24所示。
3
7
51
5
7
3
41
(a)初如森林
(b)一次合并后的森林
注:
哈夫曼树的不是唯一的!但其最小的WPL是一定的,且叶子权值越大的离根越近。从图7-24可知,n个权值构造哈夫曼树需n-1次合并,每次合并,森林中的树数目减1,最后森林中只剩下一棵树,即为我们求得的哈夫曼树。构造哈夫曼树的模拟演示3、哈夫曼树构造程序一棵有n个叶子结点的Huffman树有2n-1个结点采用顺序存储结构——一维结构数组存储结点信息结点类型定义为:typedef
struct{intweight;
int
parent,lchild,rchild;}JD;#defineMAX100voidhuffman(int
n,intw[],JDt[]){inti,j,k,x1,x2,m1,m2;for(i=1;i<(2*n);i++){t[i].parent=t[i].lchild=t[i].rchild=-1;if(i<=n)t[i].weight=w[i];elset[i].weight=0;}
for(i=1;i<n;i++){m1=m2=MAX;x1=x2=0;for(j=1;j<(n+i);j++){if((t[j].weight<m1)&&(t[j].parent==0)){m2=m1;x2=x1;m1=t[j].weight;x1=j;}elseif((t[j].weight<m2)&&(t[j].parent==0)){m2=t[j].weight;x2=j;}}k=n+i;t[x1].parent=t[x2].parent=k;t[k].weight=m1+m2;
t[k].lchild=x1;
t[k].rchild=x2;}}哈夫曼树的算法模拟演示在远程通讯中,要将待传字符转换成由二进制组成的字符串:设要传送的字符为:ABACCDA若编码为:A—00B—01 C—10D---11
若将编码设计为长度不等的二进制编码,即让待传字符串中出现次数较多的字符采用尽可能短的编码,则转换的二进制字符串便可能减少。00010010101100三、哈夫曼树的应用(哈夫曼编码)设要传送的字符为:ABACCDA若编码为:A—0B—00 C—1D---01
关键:要设计长度不等的编码,则必须使任一字符的编码都不是另一个字符的编码的前缀。这种编码称作前缀编码。ABACCDA
000011010但:0000AAAAABABB重码设要传送的字符为:ABACCDA若编码为:A—0B—110 C—10D---111
0110010101110ACBD000111采用二叉树设计二进制前缀编码规定:左分支用“0”表示;右分支用“1”表示译码过程:分解接收字符串:遇“0”向左,遇“1”向右;一旦到达叶子结点,则译出一个字符,反复由根出发,直到译码完成。
0110010101110ACBD000111ABACCDA求Huffman编码:由根→叶子,若:(1)从左分支下去,则分支为“0”;(2)从右分支下去,则分支为“1”。
ACBD000111例:已知某系统在通讯时,只出现C,A,S,T,B五种字符,它们出现的频率依次为2,4,2,3,3,试设计Huffman编码。
W(权)={2,4,2,3,3},叶子结点个数n=5148464220001113301构造的H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外墙涂料工程招标说明
- 财务审计劳务合同
- 个人短期借款合同示例
- 中原地产房屋买卖合同风险提示
- 显示屏采购合约格式
- 酒店制服购销合约
- 广华客运站招标要求及流程详解
- 招标文件制作招标
- 网络服务合同协议范本
- 中小企业借款合同英文
- 专题片创作与赏析智慧树知到期末考试答案2024年
- 饮食基因与文化智慧树知到期末考试答案2024年
- 《元旦晚会中学生》课件
- 漂流项目规划设计方案
- 徐工集团招聘测评题库
- 初中语文九年级下册《短诗五首-月夜》+教学课件
- 贵州医药市场分析及深度研究报告
- 山东省烟台市莱州市2023-2024学年五年级上学期期末考试数学试题
- HGT 4095-2023 化工用在线气相色谱仪 (正式版)
- 直流输电的基本原理课件
- 2024年口腔科医师工作总结个人述职报告(四篇合集)
评论
0/150
提交评论