- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉排序树的插入算法 根据动态列表的定义,“插入”操作在查找不成功时进行; 若二叉排序树为空树,则插入的结点为根结点;否则,插入的结点为一个叶子结点,其插入位置由查找过程得到。 平衡二叉树的查找(构造)算法: //对以p为根的二叉排序树作右旋处理,处理之后 //p指向新的树根结点(旋转之前的左子树根结点) void R_rotate (Bstree p) { //右旋转操作 Bstree lc; lc=p-lchild;//lc指向p的左子树根结点 p-lchild=lc-rchild; //lc的右子树链入p的左子树 lc-rchild=p;//p指向新的根结点 p=lc; } //R_rotate //对以p为根的二叉排序树作左旋处理, //处理之后p指向新的树根结点.旋转之前 //的右子树根结点 void L_rotate (Bstree p) { //左旋转操作 Bstree rc; rc=p-rchild;//rc指向p的右子树根结点 p-rchild=rc-lchild; //rc的左子树接为p的右子树 rc-lchild=p;//p指向新的根结点 p=rc; } //L_rotate //对以指针T所指结点为根的二叉树作左平衡旋转 //处理,算法结束时,指针T指向新的根结点 void Lbalance (Bstree T) { //参考算法8.9 Bstree lc,rc; lc=T-lchild;//lc指向T的左子树根结点 switch(lc-bf) { //检查T的左子树平衡度,作相应平衡处理 case LH: //新结点插入在T的左孩子的左子树 T-bf=lc-bf=EH; //上, 作单右旋处理 R_rotate(T);break; case RH://新结点插入在二叉树T的左孩 //子的右子树上,作双旋转处理操作 rc=lc-rchild;//rc指向T的左孩子的右子树根 switch(rc-bf) { //修改T及其左孩子的平衡因子 case LH: T-bf=RH; lc-bf=EH; break; case EH: T-bf=lc-bf=EH;break; case RH: T-bf=EH; lc-bf=LH; break; } //switch_rc rc-bf=EH; L_rotate(T-rchild); //对T的左子树作左旋平衡处理 R_rotate(T);//对T作右旋平衡处理 } //switch_lc } //Lbalance (构造算法结束) 平衡二叉树的查找性能分析: 在平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡树的深度。 问:含n个关键字的二叉平衡树可能达到的最大深度是多少? n = 0 空树 最大深度为 0 n = 1 最大深度为 1 n = 2 最大深度为 2 n = 4 最大深度为 3 n = 7 最大深度为 4 先看几个具体情况: 反过来问,深度为h的二叉平衡树中所含结点的最小值Nh是多少? h=0, N0=0; h=1, N1=1; h=2, N2=2; 一般情况下(h≥2) Nh=Nh-1+Nh-2+1 = Nh = Fh+2 - 1 ≈ ?h+2/5 - 1 (F为斐波那契函数, ?=(1+?5)/2 ) = hn≈log?(?5 (n+1))-2 = 在平衡二叉树上进行查找的时间复杂度为O(logn) B-树 B-树定义 查找操作 插入操作 删除操作 查找性能的分析 B-树的定义(R. Bayer和E. Maccreight): 一棵m阶的B-树,或为空树,或为满足下列5个特性的m叉树: 1) 树中每个结点至多有m棵子树; 2) 根结点或为叶子结点,或至少有 两颗子树; 3) 除根结点之外的所有分支结点, 至少有?m/2?颗子树; 4) 所有分支结点都包含下列信息: (n, A0, K1, A1, K2, A2, …, Kn , An) 其中,Ki为关键字(KiKi+1), n为关键字的个数,Ai指向子树的根结点,且该子树中所有结点的关键字 Ki+1;An指向的子树中所有结点的关键字 Kn。 5) 所有叶子结点都出现在同一个层次上,并且不带信息 (实际上这些结点不存在,指向这些结点的指针为空; 这些结点可以看作是查找失败的结点)。 B-树是一种平衡的多路查找树。hash 例如:4阶B-树,含14个关键字,深度=4。 1 50 2 71 84 2 3 8 3 20 26 43 2 56 62 1 78 2 89 96 1 15 4阶 n K1 A
您可能关注的文档
最近下载
- 2009石油化工行业检修工程动工预算定额说明.docx
- YB∕T6294-2024 锌铝合金镀层弹簧钢丝(报批稿).pdf VIP
- TSGZ6001—2019特种设备作业人员考核规则正文.pdf VIP
- 新湘教版七年级数学上册全册导学案.pdf VIP
- 2025年内蒙古自治区呼和浩特市初一新生入学分班考试真题含答案.docx VIP
- 2025年西藏高考理综真题试卷及答案.docx VIP
- 部编人教版一年级数学上册全册教案.docx VIP
- 超市经营服务方案.docx VIP
- 腐蚀数据与选材手册-校对版.xls VIP
- 六年级下册语文试卷-《金色的鱼钩》一课一练(含答案)人教部编版.pdf VIP
文档评论(0)