首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
二叉排序树采用二叉链表存储。写一个算法,删除结点值是X的结点。要求删除该结点后,此树仍然是一棵二叉排序树,并且高度没有增长(注意:可不考虑被删除的结点是根的情况)。
二叉排序树采用二叉链表存储。写一个算法,删除结点值是X的结点。要求删除该结点后,此树仍然是一棵二叉排序树,并且高度没有增长(注意:可不考虑被删除的结点是根的情况)。
admin
2019-01-16
40
问题
二叉排序树采用二叉链表存储。写一个算法,删除结点值是X的结点。要求删除该结点后,此树仍然是一棵二叉排序树,并且高度没有增长(注意:可不考虑被删除的结点是根的情况)。
选项
答案
在二叉排序树上删除结点,首先要查找该结点。查找成功后,若该结点无左子树,则可直接将其右子树的根结点接到其双亲结点上;若该结点有左子树,则将其左子树中按中序遍历的最后一个结点代替该结点,从而不增加树的高度。 void Delete(BSTree bst,keytype X){ //在二叉排序树bst上,删除其关键字为X的结点 BSTree f,P=bst: while(P&&p一>key!=X) //查找值为X的结点 if(p一>key>X){f=P;p=p->lehild;} else{f=p;P=p一>rehild;} if(P==null){prinff(”无关键字为x的结点\n”);exit(0):} if(p->lchild==null){ //被删结点无左子树 if(f一>lchild==P)f一>lchild=P一>rchild;//将被删结点的右子树接到其双亲上 else f一>rchild=p一>rchild; } else{q=p;s=p->lchild; //被删结点有左子树 while(s->rchild!=null) //查左子树中最右下的结点(中序最后结点) {q=s;s=s->rchild;} p->key=s->key; //结点值用其左子树最右下的结点的值代替 if(q==p)p一>lchild=s一>lchild; //被删结点左子树的根结点无右子女 else q->rchild=s->lchild: //s是被删结点左子树中序序列最后一个结点 free(s); } }
解析
转载请注明原文地址:https://kaotiyun.com/show/llRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
第一国际成立前,各国无产阶级强烈要求加强国际团结的直接原因是()。
简述中共八大的内容以及主要历史功绩。
概述罗马共和国早期平民反贵族斗争的原因、过程和意义。
16世纪中期,德意志资产阶级迫切要求实现国家的统一,其首要的目的是()。
三国时期,魏、蜀、吴三国灭亡的历史顺序是()。
洋务派创办军事工业的方式是()。
格拉古兄弟改革
在平衡二叉树中的每个结点上增设一个Lsize域,其值为它的左子树中的结点个数加1,试写一个时间复杂度为O(logn)的算法,确定树中第k个结点的位置。
假设在一台单处理机上执行如下表所示的进程,且假定这些进程在时刻0以1,2,3,4,5的顺序创建。时间单位为时间片,优先级以数值大者为优。(1)请说明分别使用FCFS、RR(时间片=1)、SPF以及非抢夺式优先级调度算法时,这些进程的执行
不需要抢占的进程调度算法是()。
随机试题
自动变速器升档过迟如何处理?
卧式铣床上用端铣法铣削矩形工件的垂直面,当采用纵向进给的不对称铣削时,铣削之前不必找正工作台零位。
下列各项中,属于德鲁克的著作的是
女性生殖功能成熟的重要标志
下列哪条不是流行病学实验研究的缺点
人对客观现实稳定的态度和与之相适应的习惯化的行为方式是指
机械伤害是木工机械作业的常见事故。下列关于造成机械伤害的说法中,错误的是()。
SomeyearsagoIwasofferedawritingassignmentthatwouldrequirethreemonthsoftravelthroughEurope.Ihadbeenabroada
Officeworkerswhowouldnormallystepintoapuborgymtocopewiththestressofaworkingdayarebeinginvitedinsteadtos
Forthispart,youareallowed30minutestowriteacompositionentitledWaterShortage.Youshouldwriteatleast150wordsbu
最新回复
(
0
)