当前位置: 答题翼 > 问答 > 计算机类考试 > 正文
目录: 标题| 题干| 答案| 搜索| 相关
问题

试题三(共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:

}

参考答案
您可能感兴趣的试题
  • 试题二(共 15分) 阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明 1】 函

  • 试题四(共 15分) 阅读以下说明和C函数,将解答填入答题纸的对应栏内。 【说明】 函数del_substr(S,T)

  • 试题二(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】如果矩

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

  • 试题三(共15分) 阅读以下说明 回答问题1至问题5 将解答填入答题纸对应的解答栏内。 【说明】 某单位

  • 试题三(共15分) 阅读以下说明 回答问题1至问题5 将解答填入答题纸对应的解答栏内。 【说明】 某网