编写算法,在二叉排序树上查找关键字值为key的算法。
第1题:
A.28,36,18,46,35
B.18,36,28,46,35
C.46,28,18,36,35
D.46,36,18,28,35
第2题:
对于二叉查找树(Binary Search Tree),若其左子树非空,则左子树上所有结点的值均小于根结点的值;若其右子树非空,则右子树上所有结点的值均大于根结点的值。左、右子树本身就是两棵二叉查找树。因此,对任意一棵二叉查找树进行(61)遍历可以得到一个结点元素的递增序列。在具有n个结点的二叉查找树上进行查找运算,最坏情况下的算法复杂度为(62)。
A.先序
B.中序
C.后序
D.层序
第3题:
● 用关键字序列10、20、30、40、50构造的二叉排序树(二叉查找树)为 (63) 。
第4题:
设二叉排序树的高度为h,则在该树中查找关键字key最多需要比较()次。
第5题:
第6题:
第7题:
在结点数确定的二叉排序树上进行查找的平均查找长度与二叉树的形态有关,最差的情况是二叉排序树为()树的时候。
第8题:
依次插入关键字(51, 37,60,54,49,32,79,27,36)生成二叉排序树,则查找关键字值54(查找成功),需做的关键字比较次数为();查找关键字值22(查找失败),需做的关键字比较次数为()
第9题:
关于二叉排序树描述有误的是()。
第10题:
折半查找又称为(),使用该查找算法的前提条件是,查找表中记录相应的关键字值必须按()。
第11题:
折半查找
顺序查找
随机查找
跳跃式查找
第12题:
第13题:
第14题:
在查找算法中,可用平均查找长度(记为ASL)来衡量一个查找算法的优劣,其定义为:
此处Pi为表中第i个记录被查找的概率,Ci为查找第i个记录时同关键字比较的次数,n为表中记录数。
以下叙述中均假定每一个记录被查找的概率相等,即Pi=//n(i=1,2,…,n)。当表中的记录连续存储在一个一维数组中时,可采用顺序查找与折半查找方法(折半查找要求表是按关键字有序排列的)。顺序查找时的ASL为(19),折半查找时的ASL为(20)。记录的关键字有序时,用二叉排序树查找记录,在最坏的情况下,ASL为(21)。当二叉排序树是一棵平衡树时,ASL为(22)。在平衡树上删除一个结点后可以通过旋转使其平衡,最坏的情形下需(23)次旋转。
A.O(1)
B.O(log2n)
C.O(log2n2)
D.O(nlog2n)
E.O(n)
第15题:
在关键字随机分布的情况下,在二叉排序树上进行查找的平均查找长度与(28)的量级相当。
A.顺序查找
B.二分查找
C.哈希查找
D.逆序查找
第16题:
试题三(共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:
}
第17题:
第18题:
数据结构与算法里,二叉排序树的查找方式和()相似,请将不是这个答案的选项选上。
第19题:
基于关键字比较大小的排序算法中,()排序算法的平均时间复杂度最优。
第20题:
在一棵二叉排序树上实施()遍历后,其关键字序列是一个有序表。
第21题:
数据结构与算法里,二叉排序树的查找方式跟顺序表的折半查找类似。
第22题:
第23题:
对
错
第24题: