版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
检索数据结构与算法1BST2(1)若它的左子树不空,则左子树上所有结点的值均小于根结点的值;二叉排序树
二叉排序树或者是一棵空树;或者是具有如下特性的二叉树:(3)它的左、右子树也都分别是二叉排序树。(2)若它的右子树不空,则右子树上所有结点的值均大于根结点的值;3二叉排序树的查找算法1)若给定值等于根结点的关键字,则查找成功;2)若给定值小于根结点的关键字,则继续在左子树上进行查找;3)若给定值大于根结点的关键字,则继续在右子树上进行查找。否则,若二叉排序树为空,则查找不成功;450308020908540358832例如:二叉排序树查找关键字==50,505035,503040355090,50809095,5从上述查找过程可见,在查找过程中,生成了一条查找路径:
从根结点出发,沿着左分支或右分支逐层向下直至关键字等于给定值的结点;或者
从根结点出发,沿着左分支或右分支逐层向下直至指针指向空树为止。
——查找成功
——查找不成功6根据动态查找表的定义,“插入”操作在查找不成功时才进行;二叉排序树的插入算法若二叉排序树为空树,则新插入的结点为新的根结点;否则,新插入的结点必为一个新的叶子结点,其插入位置由查找过程得到。7(1)被删除的结点是叶子;(2)被删除的结点只有左子树或者只有右子树;(3)被删除的结点既有左子树,也有右子树。二叉排序树的删除算法可分三种情况讨论:和插入相反,删除在查找成功之后进行,并且要求在删除二叉排序树上某个结点之后,仍然保持二叉排序树的特性。8(1)被删除的结点是叶子结点其双亲结点中相应指针域的值改为“空”(2)被删除的结点只有左子树或者只有右子树其双亲结点的相应指针域的值改为“指向被删除结点的左子树或右子树”。(3)被删除的结点既有左子树,也有右子树以其前驱替代之,然后再删除该前驱结点9BST查找性能的分析
对于每一棵特定的二叉排序树,均可按照平均查找长度的定义来求它的ASL值,显然,由值相同的n个关键字,构造所得的不同形态的各棵二叉排序树的平均查找长度的值不同,甚至可能差别很大。10由关键字序列
3,1,2,5,4构造而得的二叉排序树,由关键字序列
1,2,3,4,5构造而得的二叉排序树,例如:2134535412ASL=(1+2+3+4+5)/5=3ASL=(1+2+3+2+3)/5=2.211
下面讨论平均情况:
不失一般性,假设长度为
n
的序列中有k
个关键字小于第一个关键字,则必有n-k-1
个关键字大于第一个关键字,由它构造的二叉排序树:n-k-1k的平均查找长度是n
和k的函数P(n,k)(0kn-1)。12
假设n个关键字可能出现的n!种排列的可能性相同,则含n个关键字的二叉排序树的平均查找长度:在等概率查找的情况下,1314由此可类似于解差分方程,此递归方程有解:15AVL16平衡二叉树(AVL)AVL树定义 它或者是一棵空二叉树,或者是具有下列特性的二叉树:它的左子树和右子树的深度之差的绝对值不大于1,且左、右子树也是平衡二叉树结点的平衡因子 二叉树中某一结点的左子树的深度与右子树的深度之差17例:ABDCFEG–1+1000–1–1平衡二叉树ABDCFEG–1+2+100–2–2–1HI0不平衡的二叉树可以证明AVL树的深度和logn同数量级平衡二叉树(AVL)18BST的平衡旋转图例ABARBRBLBAARBRBLABBRBLALBABRBLALABARCRBLCCLCBARCRBLACLABALCRBRCCLCABRCRALBCL19举例:构建AVL树输入关键码序列(13,24,37,90,53)(a)130(b)1324-10(c)1324370–2–1(d)243713000(e)1(f)243713-2-2090530(g)2437135390539037(h)24130000-120举例:构建AVL树(续)输入关键码序列(13,24,37,90,53,95)539037241300-1-1-29502437135390955390372413001-1-2700243713539070输入关键码序列(13,24,37,90,53,70)21举例:构建AVL树(续)输入关键码序列(13,24,37,90,53,40)53903724130-101-240024401337539053903724130111-2300243013375390输入关键码序列(13,24,37,90,53,30)22平衡树结构的方法单旋转额外的结点是S左子女的左子女额外的结点是S右子女的右子女双旋转额外的结点是S左子女的右子女额外的结点是S右子女的左子女旋转操作的正确性容易由保持BST树的特性证明在经过平衡处理后,新平衡树的深度与插入之前的子树相同。因此当AVL树因插入结点而失去平衡时,仅需对最小不平衡子树进行平衡旋转处理即可23
在平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡树的深度。平衡树的查找性能分析问:含n
个关键字的二叉平衡树可能达到的最大深度是多少?24因此,在二叉平衡树上进行查找时,查找过程中和给定值进行比较的关键字的个数和
log(n)
相当。由此推得,深度为
h的二叉平衡树中所含结点的最小值Nh=h+2/5-1。反之,含有n
个结点的二叉平衡树能达到的最大深度hn=log(5(n+1))-2。25课堂练习已知8个元素(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵AVL树.请下课时,提交你的练习结果给我,谢谢。并请写好你的学号和姓名。26三、B-树1.定义2.查找过程3.插入操作4.删除操作5.查找性能的分析271.B-树的定义B-树是一种平衡
的多路
查找
树:28
在
m
阶的B-树上,每个非终端结点可能含有:
n
个关键字Ki(1≤i≤n)n<m
n
个指向记录的指针Di(1≤i≤n)
n+1
个指向子树的指针Ai(0≤i≤n)多叉树的特性29非叶结点中的多个关键字均自小至大有序排列,即:K1<K2<…<Kn
;
Ai-1所指子树上所有关键字均小于Ki
;
Ai所指子树上所有关键字均大于Ki
;查找树的特性30平衡树的特性树中所有叶子结点均不带信息,且在树中的同一层次上;根结点或为叶子结点,或至少含有两棵子树;其余所有非叶结点均至少含有m/2棵子树,至多含有m
棵子树;31从根结点出发,沿指针搜索结点和在结点内进行顺序(或折半)查找两个过程交叉进行。2.查找过程:若查找成功,则返回指向被查关键字所在结点的指针和关键字在结点中的位置;若查找不成功,则返回插入位置。32在查找不成功之后,需进行插入。显然,关键字插入的位置必定在最下层的非叶结点,有下列几种情况:3.插入1)插入后,该结点的关键字个数n<m,
不修改指针;332)插入后,该结点的关键字个数n=m,
则需进行“结点分裂”,令s=m/2,
在原结点中保留(A0,K1,……,Ks-1,As-1);建新结点(As,Ks+1,……,Kn,An);
将(Ks,p)插入双亲结点;3)若双亲为空,则建新的根结点。34例如:下列为3阶B-树502040
80插入关键字=60,
608090,60809090
50806030,
40203050808030
5035
和插入的考虑相反,首先必须找到待删关键字所在结点,并且要求删除之后,结点中关键字的个数不能小于m/2-1,否则,要从其左(或右)兄弟结点“借调”关键字,若其左和右兄弟结点均无关键字可借(结点中只有最少量的关键字),则必须进行结点的“合并”。4.删除36
在B-树中进行查找时,其查找时间主要花费在搜索结点(访问外存)上,即主要取决于B-树的深度。5.查找性能的分析37在含N
个关键字的B-树上进行一次查找,需访问的结点个数不超过
logm/2((N+1)/2)+1结论:38是B-树的一种变型四、B+树391.B+树的结构特点:※每个叶子结点中含有
n
个关键字和n
个指向记录的指针;并且,所有叶子结点彼此相链接构成一个有序链表,其头指针指向含最小关键字的结点;40※每个非叶结点中的关键字Ki
即为其相应指针Ai所指子树中关键字的最大值;※所有叶子结点都处在同一层次上,每个叶子结点中关键字的个数均介于m/2和m之间。412.查找过程
※在B+树上,既可以进行缩小范围的查找,也可以进行顺序查找;
※在进行缩小范围的查找时,不管成功与否,都必须查到叶子结点才能结束;
※若在结点内查找时,给定值≤Ki,则应继续在Ai所指子树中进行查找。423.插入和删除的操作类似于B-树进行,即必要时,也需要进行结点的“分裂”或“归并”。43
5096
155062
78
96
717884
89
96
566220264350
3815sqroot44五、键树1.
键树的结构特点2.
.双链树3.Trie树451.
键树的结构特点:
※关键字中的各个符号分布在从根结点到叶的路径上,叶结点内的符号为“结束”的标志符。因此,键树的深度和关键字集合的大小无关;
※键树被约定为是一棵有序树,即同一层中兄弟结点之间依所含符号自左至右有序,并约定结束符‘$’小于任何其它符号。46HAD$S$VE$E$R$E$IGH$S$例如:表示关键字集合{HAD,HAS,HAVE,HE,HER,HERE,HIGH,HIS}472.双链树—以二叉链表作存储结构实现的键树typedef
enum{LEAF,
BRANCH}NodeKind;
//两种结点:{叶子和
分支}结点结构:first
symbol
next分支结点infoptr
symbol
next叶子结点指向孩子结点的指针指向兄弟结点的指针指向记录的指针48HAD$HADE$R$$ES$GH$IHEHERHEREHIGHHIS…T叶子结点分支结点含关键字的记录49在双链树中查找记录的过程:假设:T为指向双链树根结点的指针,
K.ch[0..K.num-1]
为待查关键字
(给定值)。则查找过程中的基本操作为进行下列比较:
K.ch[i]=?p->symbol
其中:p指向双链树中某个结点,
0≤i≤K.num-1503.Trie树—以多重链表作存储结构实现的键树结点结构:分支结点叶子结点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏活动教案模板
- 2024年深海探测技术项目信托资金借款合同3篇
- 一年级语文园地五教案
- 2025年直流电源项目提案报告模稿
- 公文报告的范文
- 财务经理述职报告
- 绘画工作总结
- 结构工程师工作总结(12篇)
- 学生会辞职报告(集合15篇)
- 简短的求职自我介绍-
- 2025年上半年河南省西峡县部分事业单位招考易考易错模拟试题(共500题)试卷后附参考答案-1
- 深交所创业板注册制发行上市审核动态(2020-2022)
- 手术室护理组长竞聘
- 电力系统继电保护试题以及答案(二)
- 小学生防打架斗殴安全教育
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 《应用化学基础》试卷
- 学生请假外出审批表
- 疼痛诊疗与康复
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
- 新版【处置卡图集】施工类各岗位应急处置卡(20页)
评论
0/150
提交评论