首页 > 大学专科
题目内容 (请给出正确答案)
[主观题]

在二叉搜索树上删除一个有两个子女的结点时,可以采用以下方法:用左子树TL上具有最大关键码的

结点或者用右子树TR上具有最小关键码的结点顶替,再递归地删除适当的结点。可随机选择其中一个方案。试编写程序实现这个删除方法。

查看答案
答案
收藏
如果结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能还需要:
您的账号:
发送账号密码至手机
发送
安装优题宝APP,拍照搜题省时又省心!
更多“在二叉搜索树上删除一个有两个子女的结点时,可以采用以下方法:…”相关的问题
第1题
● 对于二叉查找树(Binary Search Tree) ,若其左子树非空,则左子树上所有结点的值均小于根结点的
值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二叉查找树。因此,对任意一棵二叉查找树进行 (61) 遍历可以得到一个结点元素的递增序列。在具有 n 个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为 (62) 。

(61)

A. 先序

B. 中序

C. 后序

D. 层序

(62)

A. O(n2

B. O(nlog2n)

C. O(log2n)

D. O(n)

点击查看答案
第2题
●非空二叉排序树的定义是:若根结点具有左子树,则左子树中所有结点的关键码均小于根结点的关键码;
若根结点具有右子树,则右子树中所有结点的关键码均大于根结点的关键码;左、右子树也是二叉排序树。由此可知,在一个二叉排序树中,(40)。

(40)

A.从根结点到任何一个叶子结点的路径上,结点的关键码序列呈递增排列

B.从根结点到任何一个叶子结点的路径上,结点的关键码序列呈递减排列

C.同层次结点从左向右排列,结点的关键码序列呈递增排列

D.同层次结点从左向右排列,结点的关键码序列呈递减排列

点击查看答案
第3题
阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。【说明】二叉查找树又称为二叉排序树

阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。

【说明】

二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:

●若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;

●若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;

●左、右子树本身就是二叉查找树。

设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:

typedefstructBiTnode{

intkey_value;/*结点的键值,为非负整数*/

structBiTnode*left,*right;/*结点的左、右子树指针*/

}*BSTree;

函数find_key(root,key)的功能是用递归方式在给定的二叉查找树(root指向根结点)中查找键值为key的结点并返回结点的指针;若找不到,则返回空指针。

【函数】

BSTreefind_key(BSTreeroot,intkey)

{

if((1))

returnNULL;

else

if(key==root->key_value)

return(2);

elseif(keykey_value)

return(3);

else

return(4);

}

【问题1】

请将函数find_key中应填入(1)~(4)处的字句写在答题纸的对应栏内。

【问题2】

若某二叉查找树中有n个结点,则查找一个给定关键字时,需要比较的结点个数取决于(5).

点击查看答案
第4题
设一棵二叉树的存储表示是二叉链表,编写一个用逆转链方法实现二叉树前序遍历的算法。这个方法
的思想是在遍历过程中沿着结点的左子女或右子女方向“下降”时,临时改变其leftChild或rightChild的值,使之指向该结点的父结点,从商为以后的“上升”提供路径;在上升的过程中将结点的leftChild或rightChild的值恢复原来的值。为了在上升的过程中区分是从该结点的左子树上升的还是从右子树上升的,在结点中设置一个tag标志。进人算法时,所有结点的tag设为0,当遍历过程中进入结点的左子树时,将该结点的tag置为l、从左子树退出进人右子树时再将该结点的tag置为0.

点击查看答案
第5题
在一棵二叉树中,任一结点的关键码值都大于它的(如果存在)左子女结点的关键码值,且小于它的右子女结点(如果存在)的关键码值,则此二叉树一定是二叉搜索树。()
在一棵二叉树中,任一结点的关键码值都大于它的(如果存在)左子女结点的关键码值,且小于它的右子女结点(如果存在)的关键码值,则此二叉树一定是二叉搜索树。()

此题为判断题(对,错)。

点击查看答案
第6题
在一非空二叉树的中序遍历序列中,根结点的右边(40)。A.只有右子树上的所有结点B.只有右子树上的部

在一非空二叉树的中序遍历序列中,根结点的右边(40)。

A.只有右子树上的所有结点

B.只有右子树上的部分结点

C.只有左子树上的部分结点

D.只有左子树上的所有结点最左子树

点击查看答案
第7题
在非空二叉树的中序遍历序列中,二叉树的根结点的左边(43)。A.只有左子树上的所有结点B.只有左子树

在非空二叉树的中序遍历序列中,二叉树的根结点的左边(43)。

A.只有左子树上的所有结点

B.只有左子树上的部分结点

C.只有右子树上的所有结点

D.只有右子树上的部分结点

点击查看答案
第8题
在二叉搜索树中,任一结点所具有的关键码值都大于它的左子女(如果存在)的关键码值,同时小于其右子女(如果存在)的关键码值。()
在二叉搜索树中,任一结点所具有的关键码值都大于它的左子女(如果存在)的关键码值,同时小于其右子女(如果存在)的关键码值。()

此题为判断题(对,错)。

点击查看答案
第9题
试题三(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】函数In

试题三(共15分)

阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。

【说明】

函数Insert _key (*root,key)的功能是将键值key插入到*root指向根结点的二叉查找树中(二叉查找树为空时*root为空指针)。若给定的二叉查找树中已经包含键值为key的结点,则不进行插入操作并返回0;否则申请新结点、存入key的值并将新结点加入树中,返回l。

提示:

二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:

●若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;

●若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;

●左、右子树本身就是二叉查找树。

设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:

typedef struct BiTnode{

int key _value; /*结点的键值,为非负整数*/

struct BiTnode *left,*right; /*结点的左、右子树指针*/

}BiTnode, *BSTree;

【C函数】

int Insert _key(BSTree *root,int key)

{

BiTnode *father= NULL,*p=*root, *s;

while((1)&&key!=p->key_value){/*查找键值为key的结点*/

father=p;

if(key< p->key_value)p= (2) ; /*进入左子树*/

else p= (3) ; /木进入右子树*/

}

if (p) return 0; /*二叉查找树中已存在键值为key的结点,无需再插入*/

s= (BiTnode *)malloc((4) );/*根据结点类型生成新结点*/

if (!s) return -1;

s->key_value= key; s->left= NULL; s->right= NULL;

if(!father)

(5) ; /*新结点作为二叉查找树的根结点*/

else /*新结点插入二叉查找树的适当位置*/

if(key< father->key_value)father->left = s;

elsefather->right = s;

retum 1:

}

点击查看答案
第10题
编写一个递归算法,在一棵有n个结点的随机建立起来的二叉搜索树上搜索第k(1≤k≤n)小的元素,并返
编写一个递归算法,在一棵有n个结点的随机建立起来的二叉搜索树上搜索第k(1≤k≤n)小的元素,并返

回指向该结点的指针。要求算法的平均时间复杂度为O(log2n)。二叉搜索树的每个结点中除data、ieftChild、rightChild等数据成员外、增加一个count成员,保存以该结点为根的子树上的结点个数。

点击查看答案
退出 登录/注册
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改