问题

试题四

阅读下列函数说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。

[函数说明]

函数DeleteNode(Bitree *r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

typedef struct Tnode{

int data;

struct Tnode *Lchild,*Rchild;

}*Bitree;

在二叉查找树上删除一个结点时,要考虑三种情况:

1若待删除的结点p是叶子结点,则直接删除该结点;

2若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;

3若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述1、2情况之一。

[函数代码]

int DeleteNode(Bitree *r,int e) {

Bitreep = *r, pp, s, c;

while( (1) ) { /*从树根结点出发查找键值为e的结点*/

pp = p;

if ( e< p->data) p = p -> Lchild;

else p = p->Rchild;

}

if(!p) return –1; /* 查找失败 */

if(p->Lchild && p->Rchild) { /* 处理情况3 */

s = (2);pp = p;

while ( (3) ) { pp = s; s = s-> Rchild; }

p->data = s ->data; p = s;

}

/*处理情况1、2*/

if( (4) ) c = p -> Lchild;

elsec = p -> Rchild;

if(p == *r) *r = c;

elseif ( (5) ) pp -> Lchild = c;

elsepp->Rchild = c;

free(p);

return 0;

}

参考答案
您可能感兴趣的试题
  • Internet的域名结构是树状的,顶级域名不包括()。A.usa美国B.com商业部门C.edu教育D.cn中国
  • 上网时想同时打开多个主页,只要按()即可在不关闭当前主页的基础上打开另一主页。A.Ctrl+MB.Ctrl+-C.Ctrl+WD.Ctrl+N
  • 下面是一些因特网上常见的文件类型,请指出哪个文件类型一般代表WWW页面文件?()A.htm或htmlB.txt或textC.gif或jpegD.wav或au
  • 超级链接可以是文件中的(),以下哪项有错?A.一个词B.一个词组C.一种颜色D.一幅图像
  • 下列说法中正确的是()。A.用鼠标左键点住“任务栏”不放,移动鼠标,则窗口随之移动B.用鼠标右键点住“任务栏”不放,移动鼠标,则窗口随之移动C.用鼠标左键点住“标题栏”不放,移动鼠标,则窗口随之移动D
  • 在资源管理器中,下列说法正确的为()。A.窗口被分为两部分,左边为目录树,右边为该文件对应的内容,且右边的显示方式可改变B.窗口被分为两部分,左边为目录树,右边为该文件对应的内容,且右边的显示方式不可
相关内容