树与二叉树典型例题讲解ppt课件.ppt

上传人:牧羊曲112 文档编号:2086224 上传时间:2023-01-08 格式:PPT 页数:35 大小:920KB
返回 下载 相关 举报
树与二叉树典型例题讲解ppt课件.ppt_第1页
第1页 / 共35页
树与二叉树典型例题讲解ppt课件.ppt_第2页
第2页 / 共35页
树与二叉树典型例题讲解ppt课件.ppt_第3页
第3页 / 共35页
树与二叉树典型例题讲解ppt课件.ppt_第4页
第4页 / 共35页
树与二叉树典型例题讲解ppt课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《树与二叉树典型例题讲解ppt课件.ppt》由会员分享,可在线阅读,更多相关《树与二叉树典型例题讲解ppt课件.ppt(35页珍藏版)》请在三一办公上搜索。

1、例题6.1 已知一棵度为m的树有n1个度为1的结点,n2个度为2的结点,nm个为m结点,问该树中有多少个叶子结点?解:设n为总结点个数,n0为叶子结点(即度为0的结点个数),则有:n=n0+n1+n2+nm(1)又有(分支总数):n-1=n1*1+n2*2+n3*3+nm*m(2)(因为一个结点对应一个分支)式(2)-(1)得:1=n0-n2-2n3-(m-1)nm则有:n0=1+n2+2n3+(m-1)nm,练习,设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T中的叶子数为,证明:,二叉树度为0的结点总比度为2的结点多1个因为二叉树所有结点滴个数都不大于2,所以结点

2、总数n=n0+n1+n2(1)又因为度为1和度为2的结点分别有1个子树和2个子树,所以,二叉树中子树结点就有n(子)=n1+2n2二叉树中只有根节点不是子树结点,所以二叉树结点总数n=n(子)+1 即 n=n1+2n2+1(2)结合(1)式和(2)式就得n0=n2+1,练习,1、具有10个叶结点的二叉树中有()个度为2的结点 A8 B9 C10 Dll2、一棵具有 n个结点的完全二叉树的树高度(深度)是()Alogn+1 Blogn+1 Clogn Dlogn-13、一棵树高为K的完全二叉树至少有()个结点。A2k 1 B.2k-1 1 C.2k-1 D.2k,例题6.2 写出如图6.2所示的

3、二叉树的前(先)序中序和后序遍历序列.解:前序为“根左右”,从左到右收集的前序序列为:fdbacegihj;中序为“左根右”,从左到右收集的中序序列为:abcdefghij;后序为“左右根”,从左到右收集的后序序列为:acbedhjigf。,练习,一棵二叉树如图所示:写出对此树的先根、中跟、后跟序列。,先根序列:ABDEFC中根序列:DEFBAC后根序列:FEDBCA,已知先序和中序求后序,先序:ABCDEFGH中序:BDCEAFHG后序:,已知中序和后序求先序,中序:BDCEAFHG后序:DECBHGFA求先序:,问题,已知先序和后序能求中序么?,例题6.3 若一棵二叉树,左右子树均有三个结

4、点,其左子树的前(先)序序列与中序序列相同,右子树的中序序列与后序序列相同,试构造该树。【解】据题意,左子树的前序序列与中序序列相同,即有:前序:根 左 右 中序:左 根 右 也即,以左子树为根的树无左孩子。此处,右子树的中序序列与后序序列相同,即有:中序:左 根 右 后序:左 右 根 也即,以右子树为根的树无右孩子。由此构造该树如下图所示。,例题4 一棵非空的二叉树其先序序列和后序序列正好相反,画出这棵二叉树的形状。解:先序遍历为“根左右”,后序遍历为“左右根”。根结点在两个序列中的位置分别在最前和最后,正好相反;因此,若要两个序列正好相反,则左右子树必有一个不存在。其先序序列和后序序列正好

5、相反的二叉树必为单支树。即这棵二叉树的形状如下图所示。,例题6.5 已知一棵完全二叉树共有892个结点,试求:树的高度;叶结点数;单支(度为1)结点数;最后一个非终端结点的序号。解:(1)根据性质2,已知深度为k的二叉树至多有2k-1个结点(k1),由于:29-1892 210-1,所以树的高度为10。(2)对完全二叉树来说,度为1的结点只能是0或1。由n=n0+n1+n2和n0=n2+1(性质3)得:设n1=0,则有892=n0+0+n2=n2+1+n2=2n2+1,因得到的n2=891/2不为整数而出错;n1=1,则有892=n0+1+n2=n2+1+1+n2=2n2+2,得n2=445,

6、代入n0=n2+1得n0=446;故叶结点数为446。(3)由解过程可知n1=1,单支结点数为1。(4)对有n个结点的完全二叉树,最后一个树叶结点,即序号为n的叶结点其双亲结点n/2为最后一个非终端结点,则序号为892/2=446。,此外,由可知:n2=445,n1=1;则最后一个非终端结点的序号为445+1=446。对于还可以采用如下:因89229-1,则前9层的结点数为29-1=511个;而第10层的结点为892-511=381个,且381个结点对应第9层的父结点为381/2=191,而第9层的其余结点也是叶结点,即29-1=256,256-191=65,故第9层共有65个叶结点,则第10

7、层叶结点+第9层叶结点=381+65=446。,例题6.6 对如下图所示的二叉树:写出对它们进行先序中序和后序遍历时得到的结点序列;画出它们的先序线索二叉树和后序线索二叉树。,【解】对图进行先序中序和后序遍历时得到的结点序列分别如下:先序遍历的结点序列为:ABDFGHIEC中序遍历的结点序列为:FDHGIBEAC后序遍历的结点序列为:FHIGDEBCA,二叉树的先序线索二叉树如下左图所示,后序线索二叉树如下右图所示。,NIL,先序线索二叉树,例题6.7 如果已知森林的前序序列和后序序列分别为ABCDEFIGJH和BDCAIFJGHE,请画出该森林。【解】由于森林的前序序列与其对应的二叉树前序序

8、列相同,而森林的后序序列与其对应的二叉树中序序列相同。因此,根据二叉树前序序列ABCDEFIGJH和中序序列BDCAIFJGHE可画出二叉树如下图所示。,而由二叉树转化为森林的步骤得到对应的森林。,例题6.8 证明n0个叶子结点的哈夫曼树共有2n0-1个结点。证明:设度为1和2的结点个数分别为n1和 n2,二叉树结点总数为n,则有:n=n0+n1+n2根据二叉树的性质知:n0=n2+1此外,由哈夫曼树的构造原理可知:哈夫曼树不存在度为1的结点,即n1=0;所以由可得:n=n0+0+n2=n0+n0-1=2n0-1,a,CTree.r=0CTree.n=9,例6.9 用孩子链表结构表示西图所示的

9、树,PCTree.r=1PCTree.n=9,例6.10 用带双亲的孩子链表表示下图所示的树,例6.11 用孩子兄弟表示法表示下图所示的树(重点掌握),与树对应的二叉树表示其根结点无右子树。,(1)树与二叉树转换,例6.12 森林、树与二叉树转换(以二叉链表为纽带),森林转换成二叉树将各棵树分别转换成二叉树(根结点均无右孩子);将各二叉树的根结点依次用分支线连起来;以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构。森林转化成二叉树的过程:,连接跟结点,旋转成二叉树,例6.13 二叉树转换成森林抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全

10、部抹掉,使之变成孤立的二叉树还原:将孤立的二叉树还原成树,例6.14 Huffman编码设计实例,已知某系统在通信联络中只可能出现8种字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计Huffman编码。解一:先构造Huffman树,再进行编码。Huffman编码实现过程:以报文所用的不同字符为叶结点,以字符出现频率为权重构造Huffman树;然后将树中结点指向其左孩子的分支标“0”,指向其右孩子的分支标“1”;每个字符的编码即为从根到每个叶子(字符)的路径上得到的0、1序列。这种对字符的编码就是Huffman编码。,Huffman编码,H

11、uffman树,解二:利用Huffman编码算法实现。根据题意,取8个字符的权分别为(5,29,7,8,14,23,3,11),n=8,则m=2*8-1=15,按上述算法可构造一棵Huffman树,如下左图和右图分别Huffman树的初始状态和终止状态。,HT初始状态,HT终止状态,Huffman编码,Huffman树,3.树的遍历遍历:按一定搜索路经走遍树的各个顶点,使树中每一结点均被且仅被访问一次。目的:产生树中所有结点的一个线性排列。常用方法:先根(序)遍历:先访问树的根结点,然后依次先根遍历根的每棵子树。后根(序)遍历:先依次后根遍历每棵子树,然后访问根结点。按层次遍历:先访问第一层上的结点,然后依次遍历第二层,直到最后一层的结点。,先序遍历:,后序遍历:,层次遍历:,A,B,E,F,I,G,C,D,H,J,K,L,N,O,M,E,I,F,G,B,C,J,K,N,O,L,M,H,D,A,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,例6.16 树的遍历,例6.17 森林遍历,先序遍历结果:A B C D E F G H I J中序遍历结果:B C D A F E H J I G,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号