向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的值,则接着向根结点的()插入,若元素的值大于根结点的值,则接着向

题目
填空题
向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的值,则接着向根结点的()插入,若元素的值大于根结点的值,则接着向根结点的()插入。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

若二叉排序树非空,则新结点的值和根结点比较,若小于根结点,则插入到右子树;否则插入到左子树。()

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


参考答案:错误

第2题:

链表对于数据元素的插入和删除不需移动结点,只需改变相关结点的【 】域的值。


正确答案:指针
指针 解析:链表是—种非线性结构,对数据元素进行插入和删除操作时,只要修改指针域即可,不需要移动元素。

第3题:

(1)“一棵二叉树若它的根结点的值大于左子树所有结点的值,小于右子树所有结点的值,则该树一定是二叉排序树”。该说法是否正确,若认为正确,则回答正确,若认为不正确则说明理由?(2)设有查找表{7,16,4,8,20,9,6,18,5},依次取表中数据构造一棵二叉排序树. 对上述二叉树给出后序遍历的结果.


参考答案:

第4题:

阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树。 (1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值。 (2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值。 (3)左、右子树本身就是两棵二叉查找树。 二叉查找树是通过依次输入数据元素并把它们插入到二叉树的适当位置上构造起来的,具体的过程是:每读入一个元素,建立一个新结点,若二叉查找树非空,则将新结点的值与根结点的值相比较,如果小于根结点的值,则插入到左子树中,否则插入到右子树中;若二叉查找树为空,则新结点作为二叉查找树的根结点。 根据关键码序列{46,25,54,13,29,91}构造一个二叉查找树的过程如图4-1所示。设二叉查找树采用二叉链表存储,结点类型定义如下: typedef int KeyType; typedef struct BSTNode{ KeyType key; struct BSTNode *left,*right; }BSTNode,*BSTree; 图4-1(g)所示二叉查找树的二叉链表表示如图4-2所示。图4-2 函数int InsertBST(BSTree *rootptr,KeyType kword)功能是将关键码kword插入到由rootptr指示出根结点的二叉查找树中,若插入成功,函数返回1,否则返回0。

【C代码】 int lnsertBST(BSTree*rootptr,KeyType kword) /*在二叉查找树中插入一个键值为kword的结点,若插入成功返回1,否则返回0; *rootptr为二叉查找树根结点的指针 */ { BSTree p,father; (1) ; /*将father初始化为空指针*/ p=*rootptr; /*p指示二叉查找树的根节点*/ while(p&& (2) ){ /*在二叉查找树中查找键值kword的结点*/ father=p; if(kword<p->key) p=p->left; else p=p->right; } if( (3) )return 0; /*二叉查找树中已包含键值kword,插入失败*/ p=(BSTree)malloc( (4) ); /*创建新结点用来保存键值kword*/ If(!p)return 0; /*创建新结点失败*/ p->key=kword; p->left=NULL; p->right=NULL; If(!father) (5) =p; /*二叉查找树为空树时新结点作为树根插入*/ else if(kword<father->key) (6) ; /*作为左孩子结点插入*/ else (7) ; /*作右孩子结点插入*/ return 1; }/*InsertBST*/


正确答案:father=(void*)0 
keyword!=p->key
p
sizeof(BSTNode)
*rootptr
father->left=p
father->right=p 

第5题:

如果二叉树中任何一个结点的值都大于它的左子树上所有结点的值而小于右子树上所有结点的值,要得到各结点值的递增序列,应按下列哪种次序排列结点?

A.先根

B.中根

C.后根

D.层次


正确答案:B
解析:中根序列的顺序从逻辑上来说总是“左-根-右”,在本题中,这样的遍历顺序正好构成一个递增序列。

第6题:

已知二叉树T的结点形式为(lling,data,count,rlink),在树中查找值为X的结点,若找到,则记数(count)加1,否则,作为一个新结点插入树中,插入后仍为二叉排序树,写出其非递归算法。


参考答案:
  [算法描述]
  void SearchBST(BiTree &T,int target){
  BiTree s,q,f; //以数据值target,新建结点s
  s=new BiTNode;
  s->data.x=target;
  s->data.count=0;
  s->lchild=s->rchild=NULL;
  if(!T){
  T=s;
  return ;
  } //如果该树为空则跳出该函数
  f=NULL;
  q=T;
  while (q){
  if (q->data.x==target){
  q->data.count++;
  return ;
  } //如果找到该值则计数加一
  f=q;
  if (q->data.x>target) //如果查找值比目标值大,则为该树左孩子
  q=q->lchild;
  else //否则为右孩子
  q=q->rchild;
  } //将新结点插入树中
  if(f->data.x>target)
  f->lchild=s;
  else
  f->rchild=s;
  }

第7题:

对于二叉查找树(Binary Search Tree),若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值。左、右子树本身就是两棵二叉查找树。因此,对任意一棵二叉查找树进行(61)遍历可以得到一个结点元素的递增序列。在具有n个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为(62)。

A.先序

B.中序

C.后序

D.层序


正确答案:B

第8题:

●二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值;其左、右子树本身就是两棵二叉排序树。根据该定义,对一棵非空的二叉排序树进行 (42)遍历,可得到一个结点元素的递增序列

(42)

A. 先序(根、左、右)

B. 中序(左、根、右)

C. 后序(左、右、根)

D. 层序(从树根开始,按层次)


正确答案:B

第9题:

由元素序列(27,16,75,38,51)构造平衡二叉树,则首次出现的最小不平衡子树的根(即离插入结点最近且平衡因子的绝对值为2的结点)为(46)。

A.27

B.38

C.51

D.75


正确答案:D
解析:平衡二叉树(AVL树)或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。二叉树结点的平衡因子(Balance Factor, BF)定义为该结点的左子树的深度减去其右子树的深度。平衡二叉树上所有结点的平衡因子只可能是-1、0和1。只要树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。由元素序列(27,16,75,38,51)构造平衡二叉树的过程如下图所示,将元素51加入树中之前,二叉树保持平衡,加入结点51后,结点38的平衡因子由0变为-1,75所在结点的平衡因子由1变为2,27所在结点的平衡因子由-1变为-2。因此,75所在结点是离插入结点最近且平衡因子的绝对值为2的结点。

第10题:

链表对于数据元素的插入和删除不需要移动结点,只需改变相关结点的【 】域的值。


正确答案:指针
指针 解析:链表是一种非线性结构,对数据元素进行插入和删除操作时,只要修改指针域即可,不需要移动元素。

更多相关问题