[试题]

阅读以下说明和C语言函数,将应填入(n)处。

[说明]

二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则左子树上所有结点的值均小于根结点的值;若它的右子树非空,则右子树上所有结点的值均大于根结点的值;左、右子树本身就是两棵二义排序树。

函数insert_BST(char *str)的功能是:对给定的字符序列按照ASCⅡ码值大小关系创建二叉排序树,并返回指向树根结点的指针。序列中重复出现的字符只建一个结点,并由结点中的Count域对字符的重复次数进行计数。

二叉排序树的链表结点类型定义如下:

typedef struct BSTNode{

char Elem; /*结点的字符数据*/

int Count; /*记录当前字符在序列中重复出现的次数*/

struct BSTNode *Lch,*Rch; /*接点的左、右子树指针*/

}*BiTree;

[函数]

B.iTree insert_BST(char *str)

{ BiTree root,parent,p;

char (1); /*变量定义及初始化 */

root=(BiTree)malloc(sizeof(struct BSTNode));

if(!root||*s=='/0') return NULL;

root->Lch=root->Rch=NULL; foot->Count=1; root->Elem=*s++;

for(; *s!='/0';s++) {(2); parent=NULL;

while (p){ /*p从树跟结点出发查找当前字符*s所在结点 */

parent = p;

if(*s==p->Elem)/*若树中已存在当前字符结点,则当前字符的计数值加1*/

{p->Count++; break;}

else /*否则根据字符*s与结点*p中字符的关系,进入*p的左子树或右子树*/

if (*s>p->Elem) p=p->Rch;

else p=p->Lch;

}/*while*/

if( (3)) {/* 若树中不存在字符值为*s的结点,则申请结点并插入树中 */

p=(BiTree)malloc(sizeof(struct BSTNode));

if(!p)return NULL;

p->Lch=p->Rch=NULL; p->Count=1; p->Elem=*s;

/*根据当前字符与其父结点字符值的大小关系,将新结点作为左子树或右子树插入*/

if(p->Elem>parent->Elem) (4)=p;

else (5)=p;

}

}/*for*/

return root;

}

参考答案与解析:

相关试题

二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若其左子树非空,则左子树

[单选题]二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;其左、右子树本身就是两棵二叉排序树。根据该定义,对一棵非空的二叉排序树进行 (42)遍历,可得到一个结点元素的递增序列(42)A. 先序(根、左、右)B. 中序(左、根、右)C. 后序(左、右、根)D. 层序(从树根开始,按层次)

  • 查看答案
  • 二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若其左子树非空,则左子树上

    [单选题]二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;其左、右子树本身就是两棵二叉排序树。根据该定义,对一棵非空的二叉排序树进行(42)遍历,可得到一个结点元素的递增序列。A.先序(根、左、右)B.中序(左、根、右)C.后序(左、右、根)D.层序(从树根开始,按层次)

  • 查看答案
  • 二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:特其左子树非空,则左子树上

    [单选题]二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:特其左子树非空,则左子树上所有节点的值均小于根节点的值;若其右子树非空,则右子树上所有节点的值均大于根节点的值;其左、右子树本身就是两棵二叉排序树。根据该定义,对一棵非空的二叉排序树进行______遍历,可得到一个节点元素的递增序列。A.前序(根、左、右)B.中序(左、根、右)C.后序(左、右、根)D.层序(从树根开始,按层次)A.B.C.D.

  • 查看答案
  • 这些二叉排序树有多少棵是最佳二叉排序树?

    [单选题]这些二叉排序树有多少棵是最佳二叉排序树?A.6B.5C.4D.3

  • 查看答案
  • 对于一棵二叉排序树,为了得到所有节点的有序序列,应该对二叉排序树进行()。

    [单选题]对于一棵二叉排序树,为了得到所有节点的有序序列,应该对二叉排序树进行()。A.前序遍历B.中序遍历C.后序遍历D.层次遍历

  • 查看答案
  • 阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。(说明)二叉查找树又称为

    [主观题]阅读以下说明、C函数和问题,将解答填入答题纸的对应栏内。(说明)二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树:若它的左子树非空,则其左子树上所有结点的键值均小于根结点的键值;若它的右子树非空,则其右子树上所有结点的键值均大于根结点的键值;左、右子树本身就是二叉查找树。设二叉查找树采用二叉链表存储结构,链表结点类型定义如下:typedefstructBiTnode{intkey_value;/*结点的键值,为非负整数*/structBiTnode*left,*right

  • 查看答案
  • 在具有n个结点的二叉排序树上插入一个新结点时,根据n个数据元素生成一棵二叉排序树

    [单选题]在具有n个结点的二叉排序树上插入一个新结点时,根据n个数据元素生成一棵二叉排序树时,其时间复杂性大致为______。A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)

  • 查看答案
  • 在一棵非空二叉排序树中,关键字最小的结点的(41)。(41)

    [单选题]在一棵非空二叉排序树中,关键字最小的结点的(41)。(41)A.左子树一定为空、右子树不一定为空B.左子树不一定为空、右子树一定为空C.左子树和右子树一定都为空D.左子树和右子树一定都不为空

  • 查看答案
  • 设二叉排序树中有n个结点,则在二叉排序树的平均查找长度为()。

    [单选题]设二叉排序树中有n个结点,则在二叉排序树的平均查找长度为()。A.O(n)B.C.O(1)D.O(n-1)

  • 查看答案
  • 设二叉排序树中有n个节点,则在二叉排序树的平均查找长度为()。

    [单选题]设二叉排序树中有n个节点,则在二叉排序树的平均查找长度为()。A.O(n)B.C.O(1)D.O(n-1)

  • 查看答案