数据结构导论第四章.ppt
《数据结构导论第四章.ppt》由会员分享,可在线阅读,更多相关《数据结构导论第四章.ppt(149页珍藏版)》请在三一办公上搜索。
1、1,复习前节,1、数据结构的基本概念2、顺序表、链表3、顺序栈、链栈4、顺序队、链队5、顺序串、链串6、数组和广义表,线性表,线性表的推广树的推广,2,第4章 树,4.1 树的基本概念4.2 二叉树4.3 二叉树的存储结构4.4 二叉树的遍历4.5 递归消除4.6 树和林4.7 判定树和哈夫曼树,3,本章项目:电文编码,4,文字,电文编码,电波,译码,摩尔斯电码(又译为摩斯电码)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。它由美国人艾尔菲德维尔发明(1835年)。,5,网络信息传输:,文字,数字编码,电信号,电文编码,发送者,数字编码,文字,
2、电文编码,接收者,你好,0101010101,你好,核心问题:电文如何编码称为01串?,6,本章项目:电文编码问题涉及知识点:1、树的概念2、树的专业术语3、二叉树的概念4、哈夫曼树和哈夫曼编码,核心问题:如何将电报文字转换成可传送编码,7,自然中的树,抽象的树,知识点1:树的概念,8,旋转后,9,适当进行调整,A,B,C,D,E,F,G,H,I,10,数据结构中树的形态,具有分层特点,A,B,C,D,E,F,G,H,I,11,某姓氏族谱,12,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,.,对树中的结点给定一个符号名称,具有一对多的
3、特点,13,树描述的是一种层次结构,是一种一对多的逻辑关系,14,树(Tree)是n(n=0)个结点的有限集。n=0时称为空树。n1时,有且仅有一个称为根的结点;其余结点可分为m(m0)个互不相交的有限集T1,T2,Tm,其中每个集合又是一棵树,称为子树,知识点1:树的概念,15,树的其他表示形式,A,B,C,D,E,F,H,G,M,16,结点:数据元素的内容及其指向其子树根的分支结点的度:结点拥有的子树的数目。树的度:树内各结点的度的最大值;,知识点2:树的专业术语,A、B、C、D、E、F、G、H、M均称为结点,A 结点的度为 2C 结点的度为 3M 结点的度为 0,树的度为3,17,叶子(
4、终端结点),非终端结点:度为0的结点称为叶子结点;度不为0的结点称为非终端结点。,18,结点的层数:树中根结点的层次为1,根结点子树的根为第2层,以此类推。树的高度(深度):树中所有结点层次的最大值,19,孩子,双亲,兄弟,堂兄:结点的子树的根称为该结点的孩子;该结点称为孩子的双亲;同一个双亲的孩子之间互称兄弟;双亲在同一层的结点互为堂兄弟。,A是B、C的双亲,B、C是A的孩子,B、C是兄弟关系,E、F是堂兄弟关系,20,路径:若树中存在一个序列k1,k2kn,使得ki是ki+1的双亲,则称该结点序列为k1到kn的一条路径。路径长度:这些节点经过的边的条数,序列:A B D M E,序列:A
5、B D M,序列:A C F,是路径,非路径,是路径,21,子孙,祖先:以某结点为根的子树中的所有结点都被称为是该结点的子孙。从根结点到该结点路径上的所有结点称为该结点的祖先。,22,森林:多棵互不相交的树的集合构成森林,三棵树构成的森林,23,结点结点的度(Degree)叶子(Leaf)或终端结点分支结点或非终端结点树的度层次(Level)树的深度(Depth)孩子(child)双亲(Parent)兄弟(Sibling)祖先子孙路径,24,知识点3:二叉树的概念,二叉树(Binary Tree):或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的左子树和右子树所组成的非空树,左子树和右子
6、树同样也都是二叉树,25,特征:每个结点最多只有两棵子树子树有左右之分,次序不能任意颠倒,只有一棵子树时也必须分清是左子树还是右子树,A,B,C,A,C,B,26,网络信息传输:,文字,数字编码,电信号,电文编码,发送者,数字编码,文字,电文编码,接收者,你好,0101010101,你好,核心问题:电文如何编码称为01串?,27,项目实现的进一步分析:项目核心问题:如何将电报文字转换成01编码 扩展问题:电文传送时的高效性,28,扩展问题:电文传送时的高效性,在计算机及通信中,常用二进制编码来表示字符,假设某电文通信中只使用A B C D四个字符每个字母用两位二进制数表示,例如传输100个字母
7、需要用200个二进制位,此种编码方式为等长编码,此时电文长度由电文字符数决定,对于电文:DABC可翻译为编码:对于编码:01 00 11 10可准确翻译为:,00表示A01表示B10表示C11表示D,B A D C,11 00 01 10,29,实际情况:字符在实际使用中出现频率不一样!,新问题1:如何让电文编码缩短,为提高电文传送效率,应让电文编码尽量短,考虑问题:出现频率高的字符编码位数少 出现频率低的字符编码位数多 以此降低电文总长度,常用汉字6335个,最常用字560个,常用字807个,次常用字1033个,共2400个。这些字占了书刊物汉字出现次数的99%,A 8.19 B 1.47
8、C 3.83 D 3.91E 12.25 F 2.26 G 1.71 H 4.57 I 7.10 J 0.14 K 0.41 L 3.77 前面十位是:E T A O I N R S D C,30,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,000 01 1 001 000,考虑问题:出现频率高的字符编码位数少 出现频率低的字符编码位数多 以此降低电文总长度,000表示A001表示B 01表示C 1表示D,A 5%B 10%C 15%D 70%,假定:,问题:传输100个字母所用的二进制位为,电文:ACDBA翻译成编码:编码:000 01 1 001翻译成电文:,35,+,3
9、10,+,215,170,+,=,145,A C D B,31,此种编码方式为不等长编码,采用不等长编码可缩短电文编码长度,从而提高电文传送效率,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,考虑问题:出现频率高的字符编码位数少 出现频率低的字符编码位数多 以此降低电文总长度,000表示A001表示B 01表示C 1表示D,A 5%B 10%C 15%D 70%,假定:,32,假定:,翻译:C B D B,翻译:C B D C D,新问题2:随意的不等长编码可能导致编码翻译时出现歧义,编码:000011001,问题:编码是任意给定的吗?,000表示A 001表示B 00表示C
10、1表示D,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,A 5%B 10%C 15%D 70%,000 01 1 00 1,00 001 1 001,00 001 1 00 1,错误!,错误!,33,新知识:设计不等长编码时,必须做到:任何一个字符的编码不能是另一个字符编码的前缀,这种编码为前缀码,新问题2:随意的不等长编码可能导致编码翻译时出现歧义,000表示A001表示B 01表示C 1表示D,我们设计的第一种编码,是前缀码,新问题3:如何设计前缀码,34,知识点4:哈夫曼树与哈夫曼编码,树的路径长度:树的根结点到树中每一个结点的路径长度之和。结点的带权的路径长度:该结点到
11、根结点之间的路程长度与该结点上权的乘积,路径:若树中存在一个序列k1,k2kn,使得ki是ki+1的双亲,则称该结点序列为k1到kn的一条路径。路径长度:这些节点经过的边的条数,35,知识点4:哈夫曼树与哈夫曼编码,树的路径长度:树的根结点到树中每一个结点的路径长度之和。结点的带权的路径长度:该结点到根结点之间的路程长度与该结点上权的乘积,树的路径长度:1+1+2+2+3+3结点a的带权路径长度:7*3,36,树的带权路径长度:树中所有叶子结点的带权的路径长度的和。通常记为:WPL(Weighted Path Length)。,树的带权路径长度:4*2+7*3+5*3+2*1,37,树的带权路
12、径长度:树中所有叶子结点的带权的路径长度的和。通常记为:WPL(Weighted Path Length)。由n个带权值的叶子结点构成的二叉树中,WPL最小的二叉树称为最优二叉树,或哈夫曼(Huffman)树。,WPL=4*2+7*3+5*3+2*1=46,38,WPL=7*2+5*2+2*2+4*2=36,WPL=7*1+5*2+2*3+4*3=35,WPL=7*1+4*3+2*3+5*2=35,39,1、根据给定的n个权值w1,w2,wn,构造n棵只有根结点的二叉树,令其权值为wj;2、在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点
13、权值之和;3、从森林中删除这两棵树,同时将新得到的二叉树加入森林中;4、重复上述两步,直到森林中只含一棵树为止,这棵树即哈夫曼树。,哈夫曼树的构造方法,40,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,6,2,7,第一步:把每个权值看作只有一个结点的树,41,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,第二步:取权值最小的两棵树,合并成,新树的权值为两棵子树权值之和,7,42,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,第三步:从森林中去掉被合并的结点,并将新合并的树加入到森
14、林中,继续执行第二步,直到森林合并成为一棵树,7,43,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,7,13,第三步:从森林中去掉被合并的结点,并将新合并的树加入到森林中,继续执行第二步,直到森林合并成为一棵树,44,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,7,13,16,第三步:从森林中去掉被合并的结点,并将新合并的树加入到森林中,继续执行第二步,直到森林合并成为一棵树,45,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,7,13,16,第三步:从森林中去掉被
15、合并的结点,并将新合并的树加入到森林中,继续执行第二步,直到森林合并成为一棵树,46,9,例如:已知权值 W=5,6,2,9,7 构造以权值为叶子的哈夫曼树,5,2,6,7,7,13,16,29,第三步:从森林中去掉被合并的结点,并将新合并的树加入到森林中,继续执行第二步,直到森林合并成为一棵树,构造完成,47,设计电文编码时,随意的不等长编码可能导致编码翻译时出现歧义使用前缀码,可解决不等长编码出现的歧义利用哈夫曼树可构造前缀码,构造方法:1,将字符集中的每个字符作为节点2,每个字符的出现频率作为节点的权值3,构造哈夫曼树4,令哈夫曼树中的左分支为0,右分支为1 从根到叶子节点的01序列即为
16、叶子节点的编码,48,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,A 5%B 10%C 15%D 70%,0.05,0.1,0.15,0.7,49,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,A 5%B 10%C 15%D 70%,0.05,0.1,0.15,0.7,0.15,50,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,A 5%B 10%C 15%D 70%,0.05,0.1,0.15,0.7,0.15,0.3,51,假定:某电文通信中只由ABCD四个字符构成且出现频率分别为:,A 5%B 10%C 15%D 70%,0.05,0.1
17、,0.15,0.7,0.15,0.3,1,A,B,C,D,0,1,0,1,0,1,A的编码:000B的编码:001C的编码:01D的编码:1,电文:D A B C编码:1 000 001 01,每个字符的编码都不是另一字符编码的前缀,52,项目完成,总结:,1,树的概念2,专业术语的定义3,二叉树的概念4,哈夫曼树和哈夫曼编码,下节内容:1,二叉树的性质2,二叉树基本操作3,二叉树的应用,作业:P99 6.21,53,n(n0)个结点的树的高度:最低是多少?最高是多少?,答案:1,n,练习,54,答案:,一棵树应满足下列条件:(1)有且仅有一个结点没有前驱(双亲),称该结点为树根;(2)除根结
18、点以外,其余每个结点有且仅有一个直接前驱;(3)树中每个结点可以有多个直接后继(孩子结点)。,判断,55,1、哈夫曼树只有度为0和2的结点,无度为1的结点;2、n个叶子的哈夫曼树的形态一般不唯一,但WPL是相同的;3、n个叶子的哈夫曼树共有2n-1个结点。,判断,答案:正确,56,0.1,0.2,0.3,0,1,练习:假设有字符集A,B,C,D其在电文中的使用频率分别为0.1,0.4,0.3,0.2请给出该字符集中每个字符的哈夫曼编码并将AABCDD电文翻译为哈夫曼编码,0.3,0.6,0,1,0.4,1,0,1,A,D,C,B,编码:A 100B 0C 11D 101,AABBCDD翻译:,
19、57,2009年10月考题:,58,4.2 二叉树,二叉树(Binary Tree):或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的左子树和右子树所组成的非空树,左子树和右子树同样也都是二叉树,59,特征:每个结点最多只有两棵子树子树有左右之分,其次序不能任意颠倒,只有一棵子树时也必须分清是左、右子树。,A,C,B,A,B,C,60,二叉树的五种形态,61,(1)初始化 INITIATE(BT)(2)求根 ROOT(BT)(3)求双亲 PARENT(BT,x)(4)求左孩子、右孩子Child(BT,x),RChild(BT,x)(5)建树 CREAT(x,LBT,RBT)(6)剪枝 D
20、ELLEFT(BT,x)和DELRIGHT(BT,x),二叉树的基本运算,62,1.一个非空二叉树的第i层上至多有2i-1个结点(i1)证明:i=1,只有根结点,显然成立 设i=k时成立,最多有2k-1个结点 当i=k+1时,最多的结点个数:2k-1*2=2k-1+1=2k=2(k+1)-1,二叉树的性质,63,2.深度为k的二叉树至多有2k-1个结点(k1),证明:二叉树的结点个数为:1+2+2k-1=2k-1,64,3.对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。,证明:设n1为T中度为1的结点数,则总结点数:n=n0+n1+n2(1)另:根据各个结
21、点的前驱和后继情况分支条数=n-1分支条数=n1+2*n2(2)由(1)和(2)有:n1+2*n2=n0+n1+n2-1故 n0=n2+1;,65,考虑到有序性,任一结点在树中都有确切的位置,因此可以对满二叉树进行编号。编号方式为:从上到下,从左到右。,满二叉树,深度为k且有2k-1个结点的二叉树,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,66,完全二叉树,深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树编号从1到n的结点一一对应时,称为完全二叉树。,a,b,c,d,e,f,g,h,i,j,67,1.满二叉树一定是一棵完全二叉树,反之完全二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 导论 第四
链接地址:https://www.31ppt.com/p-6296859.html