从具有n个结点的二叉查找树中查找一个元素时,在最坏情况下进行成功查找的时间复杂度为(51)。A.O(n
从具有n个结点的二叉查找树中查找一个元素时,在最坏情况下进行成功查找的时间复杂度为(51)。
A.O(n)
B.O(1)
C.O(log2n)
D.O(n2)
从具有n个结点的二叉查找树中查找一个元素时,在最坏情况下进行成功查找的时间复杂度为(51)。
A.O(n)
B.O(1)
C.O(log2n)
D.O(n2)
(61)
A. 先序
B. 中序
C. 后序
D. 层序
(62)
A. O(n2
B. O(nlog2n)
C. O(log2n)
D. O(n)
以下关于二叉排序树(或二叉查找树、二叉搜索树)的叙述中,正确的是()
A.对二叉排序树进行先序、中序和后序遍历,都得到结点关键字的有序序列
B.含有N个结点的二叉排序树高度为【log2n】+1
C.从根到任意二个叶子结点的路径上,结点的关键字呈现有序排列的特点
D.从左到右排列同层次的结点,’其关键字呈现有序排列的特点
试题四
阅读下列函数说明和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;
}
A.n
B.
C.[log2n]
D.[log2(n+1)]
利用逐点插入建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉查找树后,查找元素35要进行(29)次元素间比较。
A.2
B.3
C.4
D.5
二叉搜索树中,然后对树进行中序遍历,并将元素按序放人数组a中,为简单起见,假设a中的数据互不相同。试编写一个函数,从一棵二叉搜索树中删除最大元素。要求函数的时间复杂性必须是O(h),其中h是二叉搜索树的高度。
阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。
【流程图说明】
下面的流程(如图1所示)用N-S盒图形式描述了在一棵二叉树排序中查找元素的过程,节点有3个成员:data, left和right。其查找的方法是:首先与树的根节点的元素值进行比较:若相等则找到,返回此结点的地址;若要查找的元素小于根节点的元素值,则指针指向此结点的左子树,继续查找;若要查找的元素大于根节点的元素值,则指针指向此结点的右子树,继续查找。直到指针为空,表示此树中不存在所要查找的元素。
【算法说明】
【流程图】
将上题的排序二叉树中查找元素的过程用递归的方法实现。其中NODE是自定义类型:
typedef struct node {
int data;
struct node * left;
struct node * right;
}NODE;
【算法】
NODE * SearchSortTree(NODE * tree, int e)
{
if(tree!=NULL)
{
if(tree->data<e)
(4); //小于查找左子树
else if(tree->data<e)
(5); //大于查找左子树
else return tree;
}
return tree;
}
在某个二叉查找树(即二叉排序树)中进行查找时,效率最差的情形是该二叉查找树是(59) 。
A.完全二叉树
B.平衡二叉树
C.单枝树
D.满二叉树