具有n个结点的平衡二叉树深度的深度一定不小于log2n

数据结构复习之树 - niuman - 博客园
随笔 - 57, 文章 - 3, 评论 - 1, 引用 - 0
1、本质问题&&
  树不是线性表,是一种描述非线性层次关系的数据结构。描述的是一对多的数据结构。
2、基本特征&&
有且仅有一个结点没有直接前驱,那就是根节点;
除了根结点外,其他结点有且仅有一个直接前驱;
每个结点可以有任意后继结点;
3、基本概念&&
兄弟结点&&拥有同一个父结点的结点;
孩子、双亲&&结点的子树的根称为该节点的孩子,相应地,该节点称为孩子的双亲;
结点的度&&一个结点所包含子树的数量;
树的度&&该树所有结点中最大的度;
叶子结点&&树中度为零的结点,也叫终端结点;
结点的层数&&从根结点开始算,根结点是第一层,依次往下。
树的深度&&树中结点的最大层数
有序树&&树中的各结点的子树(兄弟结点)从左到右按一定次序去排列的树;
森林&&m(m&=0)棵互不相交的树的集合。
4、树的存储结构&&
&双亲表示法&&在每个结点的结构中,附设一个字段记录其双亲结点在数组中的位置。
孩子表示法&&每个结点有多个指针域,其中每个指针都指向一颗子树的根结点。
孩子兄弟表示法&&任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的。因此,我们设置两个指针,分别指向该节点的第一个孩子和此节点的右兄弟。
注:第一种方法与第二种方法合并组合成双亲孩子表示法。
  第三种方法最大的好处就是把一颗复杂的树变成一颗二叉树。可以充分利用二叉树的特性与算法来处理这颗树。
5、树的种类&&
无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;
有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;
二叉树:每个节点最多含有两个子树的树称为二叉树;
完全二叉树
平衡二叉树
霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树;
6、二叉树&&
特点&&每个结点最多只有两个子结点,可以没有或者只有一个。
           左子树和右子树是有顺序的,次序不能任意颠倒。
斜树:所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右节点的二叉树叫做右斜树,这两者统称为斜树。
满二叉树:除了最下面一层的叶子结点外,其他结点都有两个子结点;
完全二叉树:除了最下面一层的叶子结点外,其他各层结点数达到最大个数,而且最后一层叶子结点按照从左到右的顺序连续存在,只缺最后一层若干结点;
7、二叉树的性质&&
性质1:在二叉树的第i层上至多有2i-1个节点(i &= 1)
性质2:深度为k的二叉树至多有2k-1个节点(k &=1)
性质3:对于任意一棵二叉树T而言,其叶子节点数目为N0,度为2的节点数目为N2,则有N0 = N2 + 1。
性质4:具有n个节点的完全二叉树的深度(log2n)+1(括号内的值取下限)。
性质5:一棵完全二叉树,其深度为,节点编号按层编号,每层从左至右编号,则对任意节点i(1&= i &= n)
(1)&&&&&&& 如果i = 1,则该点为根节点,无双亲,否则其双亲为(i/2)(括号内的值取下限);
(2)&&&&&&& 如果2i&0,则该点无左孩子(节点为叶子节点),否则其左孩子为2i;
(3)&&&&&&& 如果2i+1,则该点无右孩子,否则其左孩子为2i+1;
8、存储方式&&
二叉树的顺序存储结构:
二叉树的顺序存储结构用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要体现出结点之间的逻辑关系。
就是从根结点开始一层层地按顺序存储在数组里,但是只适用于完全二叉树,因为非完全二叉树的话,可能会浪费大量的存储空间。
二叉链表:
  因为二叉树最多有两个孩子,所以二叉链表拥有一个数据域和两个指针域。
  如果有需要还可以再增加一个指向其双亲的指针域,那就称为三叉链表。
9、二叉树的遍历&&
先序:先访问根结点,后是左子树,到右子树;
中序:先左子树,后根结点,最后是右子树;
后序:先左子树,后右子树,最后根结点;
层序:从上到下,从左到右依次遍历每一层中的每一个节点。
10、树、森林与二叉树的转换&&
树转换为二叉树
森林转换为二叉树
二叉树转换为树
二叉树转换为森林
  注:面对复杂的树与森林都可以转换成简单二叉树来进行处理,由于二叉树至多只有两个节点,变化较少,很多性质与算法被研究出来,使用方便。
11、查找二叉树(排序二叉树)
  (图a)
二叉查找树是一种动态查找表(图a),具有这些性质:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(1)若它的左子树不为空,则左子树上的所有节点的值都小于它的根节点的值;
(2)若它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值;
(3)其他的左右子树也分别为二叉查找树;
(4)二叉查找树是动态查找表,在查找的过程中可见添加和删除相应的元素,在这些操作中需要保持二叉查找树的以上性质。
12、平衡二叉树(AVL树)
  含有相同节点的二叉查找树可以有不同的形态,而二叉查找树的平均查找长度与树的深度有关,所以需要找出一个查找平均长度最小的一棵,那就是平衡二叉树(图b),具有以下性质:
(1)要么是棵空树,要么其根节点左右子树的深度之差的绝对值不超过1;
(2)其左右子树也都是平衡二叉树;
(3)二叉树节点的平衡因子定义为该节点的左子树的深度减去右子树的深度。则平衡二叉树的所有节点的平衡因子只可能是-1,0,1。
13、红黑树树
  红黑树是一种自平衡二叉树,在平衡二叉树的基础上每个节点又增加了一个颜色的属性,节点的颜色只能是红色或黑色。具有以下性质:
(1)根节点只能是黑色;
(2)红黑树中所有的叶子节点后面再接上左右两个空节点,这样可以保持算法的一致性,而且所有的空节点都是黑色;
(3)其他的节点要么是红色,要么是黑色,红色节点的父节点和左右孩子节点都是黑色,及黑红相间;
(4)在任何一棵子树中,从根节点向下走到空节点的路径上所经过的黑节点的数目相同,从而保证了是一个平衡二叉树。
14、线索二叉树
  二叉链表有很多浪费的空指针可以利用,线索二叉树给二叉树的查找与遍历带来了高效率。
  指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就称为线索二叉树。
  对二叉树以某种次序遍历使其变为线索二叉树的过程称为线索化。
  二叉链表充分利用了空指针域的空间,又保证了创建过程时的一次遍历就可以终生享用的前驱后继的信息。因此,如果所用的二叉树需经常遍历或查找结点时需要某种遍历序列中的前驱后继,那么采用线索二叉树的存储结构是非常不错的选择。
15、哈弗曼树(最优二叉树)
  从树中的一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径长度。
   树的路径长度就是从树的根结点到每一结点长度之和。
  带权路径长度最小的二叉树称为哈夫曼树。
   构建哈夫曼树的步骤(四步)。
   哈夫曼树的应用:哈弗曼编码
    一般地,设需要编码的字符集为{d1,d2,...,dn},各个字符在电文中出现的次数或频率集合为{w1,w2,...,wn},以d1,d2,...,dn作为叶子结点,以w1,w2,...,wn作为相应的叶子结点的权值来构建一颗哈夫曼树。规定哈夫曼树的左分支代表0,右分支代表1,则从根结点到叶子结点所经过的分支组成0和1的序列便为该节点对应字符的编码,这就是哈弗曼编码。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
查找作业 2).ppt
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
你可能关注的文档:
··········
··········
《查找》作业
二叉树、红黑树,平衡二叉树,B-树,B+树,B*树各自的定义,现实生活中的应用范围,以及上述5种树的区别与联系,最好做成ppt形式来展示。 如果没有讲到的可以自学来理解和掌握(不会问百度),下次上课提问,并且作为平时成绩的一部分。 希望大家能够自学
如果将来想考研,想把数据结构学好,以及有想法的同学都可以尝试一下,这是一道开放式作业,但不允许不经过自己的思考,直接在网上直接粘贴答案,而应付作业者
二叉树 二叉树,是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。满二叉树,完全二叉树,排序二叉树。
1.二叉树的基本形态:
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树; (2)只有一个根结点的二叉树; (3)右子树为空的二叉树; (4)左子树为空的二叉树; (5)完全二叉树; 注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。
两个重要的概念: (1)完全二叉树——只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树;
(2)满二叉树——除了叶结点外每一个结点都有左右子女且叶结点都处在最底层的二叉树,。
3.二叉树的性质 (1) 在二叉树中,第i层的结点总数不超过2^(i-1); (2) 深度为h的二叉树最多有2h-1个结点(h&=1),最少有h个结点; (3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2, 则N0=N2+1; (4) 具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系: 若I为结点编号则 如果I&&1,则其父结点的编号为I/2; 如果2*I&=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I&N,则无左儿子; 如果2*I+1&=N,则其右儿子的结点编号为2*I+1;若2*I+1&N,则无右儿子。
4.二叉树的存储结构: (1)顺序存储方式 type node=record data:datatype l,r:
tr:array【1..n】 (2)链表存储方式,如: type
btree=^node; node=record data: lchild,rchild: 5.普通树转换成二叉树: 凡是兄弟就用线连起来,然后去掉父亲到儿子的连线,只留下父母到其第一个子女的连线。二叉树很象一株倒悬着的树,从树根到大分枝、小分枝、直到叶子把数据联系起来,这种数据结构就叫做树结构,简称树。树中每个分叉点称为结点,起始结点称为树根,任意两个结点间的连接关系称为树枝,结点下面不再有分枝称为树叶。结点的前趋结点称为该结点的&双亲&,结点的后趋结点称 为该结点的&子女&或&孩子&,同一结点的&子女&之间互称&兄弟&。二叉树是一种十分重要的树型结构。它的特点是,树中的每个结点最多只有两棵子树,即树中任何结点的度数不得大于2。二叉树的子树有左右之分,而且,子树的左右次序是重要的,即使在只有一棵子树的情况下,也应分清是左子树还是右子树。定义:二叉树是结点的有限集合,这个集合或是空的,或是由一个根结点和两棵互不相交的称之为左子树和右子树的二叉树组成。
(三)完全二叉树
对满二叉树,从第一层的结点(即根)开始,由下而上,由左及右,按顺序结点编号,便得到满二叉树的一个顺序表示。据此编号,完全二叉树定义如下:一棵具有n个结点,深度为K的二叉树,当且仅当所有结点对应于深度为K的满二叉树中编号由1至n的那些结点时,该二叉树便是完全二叉树。 三、二叉树的遍历
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树
正在加载中,请稍后...
684页247页60页148页324页362页473页208页506页24页扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
具有n个结点的完全二叉树的深度为log2n+1 证明过程是怎样的?
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
可用数学归纳法.当n=1=2^1-1时显然.假设当n&=2^k-1时具有n个结点的完全二叉树的深度为「log2n」+1,则当n=2^k(以及2^k+1,...,2^(k+1)-1)时,由归纳假设知前2^k-1个结点构成深度为「log2n」+1的树,再由完全二叉树的定义知剩余的1(或2,...,2^k)个结点均填在第「log2n」+2层上(作为“叶子”),故深度刚好增加了1.故n&=2^(k+1)-1时命题成立.证毕.(首先最好能先从直观上理完全二叉树中:第1层有1个结点;第2层有2个结点;第3层有4个结点;……第k层有2^(k-1)个结点;(前k层共有(2^k)-1个结点,故前面深度刚好是「log2(2^k-1)」+1=k-1+1=k)第k+1层是剩余的结点.)
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 平衡二叉树深度计算 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信