- 1
- 0
- 约4.88千字
- 约 3页
- 2023-10-26 发布于湖北
- 举报
第
第 PAGE 13 页
数据结构第6章树和二叉树.ppt
1、第六章树和二叉树6.1树的类型定义6.2二叉树的类型定义和实现6.3遍历二叉树和线索二叉树6.4树和森林6.5Huffman树与Huffman编码1对比树型结构和线性结构的结构特点第一个数据元素(无前驱)最终一个数据元素(无后继)其它数据元素(一个前驱、一个后继)根结点(无前驱)多个叶子结点(无后继)其它数据元素(一个前驱、多个后继)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~26.1树的类型定义树是n(n≥0)个结点的有限集D,当n≥1时:1〕有一个特定的结点root被称为根(结点);2〕除根以外的结点被分成m(m≥0)个不相交的有限集T1,T2,……,Tm,其中每个集合又是一棵树,称为根的子树。ABCDEFGHIJMKL3任何一棵非空树是一个二元组Tree=〔roo 2、t,F〕其中:root被称为根结点F被称为子树森林森林和树之间的联系:一棵树去掉根后,其子树构成一个森林;一个森林增加一个根结点成为树。森林:是m〔m≥0〕棵互不相交的树的集合。4定义或为空树,或是由一个根结点和两棵互不相交的左子树、右子树构成,并且左、右子树本身也是二叉树。特性二叉树中每个结点最多有两棵子树;二叉树每个结点的度小于等于2子树有左右之分,不能颠倒——有序树二叉树是递归结构,在二叉树的定义中又用到了二叉树的概念6.2二叉树的类型定义和实现5性质1在二叉树的第i层上至多有2i-1个结点。(i≥1)二叉树的重要特性性质2深度为k的二叉树上至多含2k-1个结点(k≥1)性质3对任何一棵二叉树,若它含有n0个叶子结点、n2个度为2的结点,则必存在关系式:n0=n2+1。性质4具有 3、n个结点的完全二叉树的深度为?log2n?+16满二叉树:深度为k,且有2k-1个结点的二叉树;特点:每一层上的结点数都是最大数目。结点层序编号方法:从根结点起自上而下逐层〔层内自左至右〕对二叉树的结点进行连续编号。123114589121367101415两类特别的二叉树:7完全二叉树:一棵深度为k有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。特点:叶子结点只可能在层次数最大的两层上出现。只有最下一层的结点数可能未到达最大值。对任一结点,假如其右子树的最大层次为L,则其左子树的最大层次为L或L+1。完全二叉树结点数2k-1-1n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点;(3)若2i+1n,则该结 4、点无右孩子结点,否则,编号为2i+1的结点为其右孩子结点。9证明:先证⑵⑶,然后证⑴。证⑵⑶,用归纳法;当i=1时,即i为根结点,若2i存在,即2存在,2为1的左孩子;若2i+1存在,即3存在,3为1的右孩子;结论成立;假设当i=j时,结论成立;LChild(j)=2j;RChild(j)=2j+1;当i=j+1时,依据完全二叉树的结构特点,j+1的左孩子应为j的右孩子的下一个结点,即LChild(j+1)=RChild(j)+1=(2j+1)+1=2(j+1)RChild(j+1)=LChild(j+1)+1=2(j+1)+1;结论成立;10下面证⑴:当i=1时,即1为根,无双亲;当i≠1时,假设k为其双亲,即i为k的孩子;①假如i为k的左孩子,即i=2k,i为偶数,k=i/2,即k 5、=?i/2?②假如i为k的右孩子,即i=2k+1,i为奇数,k=(i-1)/2,即k=?i/2?故结论成立;证明〔续〕:11Q5:设一棵完全二叉树有700个结点,则共有个叶子结点。答案:总层数k=?log2700?+1=10;//〔29〕=512且前9层总结点数为29-1=511因此,末层叶子数为700-511=189个。末层的189个叶子只占据了上层的95个结点(?189/2?),上层(k=9)右边的0度结点数还有29-1-95=161个!所以,全部叶子数=189(末层)+161(k-1层)=350个。35012另一法:可先求2度结点数,再由此得到叶子总数。首先,前k-2层的28-1〔255〕个结点确定都是2度的〔完全二叉树〕另外,末层叶子〔刚刚已求出为189〕所对应的双亲也是度=2 6、,〔共有?189/2?=94个〕。所以全部2度结点数为255(k-2层)+94(k-1层)=349个;总叶子数=2度结点数+1=350个。13Q5:设一棵完全二叉树有700个结点,则共有个叶子结点。答:最快方法:总叶子数=?n/2?=350350∵n=n0+n1+n2由公式n0=n2+1n=n0+n1+(n0-1)=2n0+n1-1n0=(n+1-n1)/2又∵n1=1或n
原创力文档

文档评论(0)