- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 高级字典结构 7.3二叉排序树 定义 定义:二叉排序树或是一棵空树,或是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 若它的右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值 它的左、右子树也分别为二叉排序树 二叉排序树的检索 二叉排序树的插入 插入原则:若二叉排序树为空,则插入结点应为新的根结点;否则,继续在其左、右子树上查找,直至某个叶子结点的左子树或右子树为空为止,则插入结点应为该叶子结点的左孩子或右孩子 二叉排序树生成:从空树出发,经过一系列的查找、插入操作之后,可生成一棵二叉排序树 插入算法 二叉排序树的删除 二叉排序树查找算法分析 在二叉排序树上查找其关键字等于给定值的结点的过程,恰是走了一条从根结点到该结点的路径的过程。和给定值比较的关键字次数等于路径长度加1(或结点所在层次数)。含有n个结点的二叉排序树并不唯一,其平均查找长度和树的形态有关。 例如,(a)图和(b)图是结点数为6的两棵二叉排序树。(a)图中树的深度为3,而(b)图树的深度为6。 从平均查找长度分析,假设6个记录的查找概率相等,即为1/6。则图 (a)树的平均查找长度为: 而图 (b)树的平均查找长度为: 当表中记录按关键字有序时,构成的二叉排序树蜕变为歪斜树。树的深度为n,其平均查找长度为(n+1)/2(和顺序查找相同),这是最差的情况。显然,最好情况下平均查找长度和log2n成正比。为了避免出现歪斜树,在构造二叉排序树的过程中需要不断进行平衡处理,使其成为平衡二叉树。 平衡二叉树上进行查找算法分析 在平衡二叉树上进行查找的过程与二叉排序树的查找算法相同。因此,在查找过程中和关键字进行比较的次数不超过树的深度。含有n个结点的平衡树的最大深度为: 因此,在平衡树上进行查找的时间复杂性为O(logn)。 练习:对关键字序列{9,3,6,8,7,10}建立一棵平衡二叉检索树. 1.B-树的查找 在B-树中查找给定关键字的方法类似于二叉排序树上的查找。不同的是在每个记录上确定向下查找的路径不一定是二路(即二叉)的,而是n+l路的。 在B-树上进行查找的过程是一个顺指针查找结点和在结点的关键字中进行查找交叉进行的过程。 B-树存储结构C语言描述: #define m 3 //B-树的阶,应根据实际情况确定 typedef int KeyType; //关键字类型 typedef struct node{ //结点数据类型 int n; //结点中关键字的个数 KeyType key[m+1]; //关键字数组为key[1..n],key[0]不用 struct node *parent; //指向双亲结点 struct node *son[m+1]; //孩子指针数组 son[0..n] }BTREE; 在B-树叶结点上删除一个关键字的方法是 首先将要删除的关键字 k直接从该叶子结点中删除。然后根据不同情况分别作相应的处理,共有三种可能情况: (1)如果被删关键字所在结点的原关键字个数n ,说明删去该关键字后该结点仍满足B-树的定义。这种情况最为简单,只需从该结点中直接删去关键字即可。 (2)如果被删关键字所在结点的关键字个数n等于 ,说明删去该关键字后该结点将不满足B-树的定义,需要调整。 调整过程为:如果其左右兄弟结点中有“多余”的关键字。则可将右(左)兄弟结点中最小(大)关键字上移至双亲结点。而将双亲结点中小(大)于该上移关键字的关键字下移至被删关键字所在结点中。 * * * * 10 18 3 8 12 2 7 4 在下面给出的检索算法中,设在二叉排序树上查找关键码为key的结点,算法结束时返回检索成功或失败的标志。并且检索成功时,position指向查找到的结点指针;检索失败时,position指向该结点应插入位置的父结点。 int search (PBinSearchTree ptree, KeyType key, PBinSearchNode *position) 10 18 3 8 12 2 7 4 例 {10, 18, 3, 8, 12, 2, 7, 4} 10 10 18 10 18 3 10 18 3 8 10 18 3 8 12 10 18 3 8 12 2 10 18 3 8 12 2 7 10 18 3 8 12 2 7 4 中序遍历二叉排序树可得到一个关键字的有序序列
您可能关注的文档
- ch11垄断市场的厂商均衡解说.ppt
- DVA07a_音视频同步解说.ppt
- DVHOP定位算法解说.ppt
- ch11完全竞争市场中的企业解说.ppt
- DVT患者长期抗凝治疗解说.ppt
- CH11异议处理解说.ppt
- DWDM第2章光纤结构和传输特性解说.ppt
- ch11直流传动控制系统1解说.ppt
- ch12(非关税)解说.ppt
- DXP数字滤波器课程设计解说.doc
- 2025至2030中国移动治疗台行业发展研究与产业战略规划分析评估报告.docx
- 2025至2030链激酶行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030爆炸物探测扫描仪行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030四川省智能制造行业细分市场及应用领域与趋势展望研究报告.docx
- 2026届高三二轮复习试题政治大单元突破练1生产资料所有制与分配制度含解析.docx
- 2026届高三二轮复习试题政治大单元突破练16哲学基本思想与辩证唯物论含解析.docx
- 2026届高三二轮复习试题政治大单元突破练2社会主义市场经济体制含解析.docx
- 浙江省衢州市五校联盟2025-2026学年高二上学期期中联考技术试题-高中信息技术含解析.docx
- 浙江省金丽衢十二校2026届高三上学期11月联考政治试题含解析.docx
- 2026届高三二轮复习试题政治大单元突破练7领导力量:中国共产党的领导含解析.docx
原创力文档


文档评论(0)