注意:此页面搜索的是所有试题
数据结构国家开放大学
已知某二叉树的先序遍历序列是aecdb,中序遍历序列是eadcb,该二叉树的根结点是 1 ;
A. e B. c C. b D. a
后序遍历序列为 2 。
A. e,d,b,c,a B. c,a,b,,d,e C. a,b,d,e,c D. a.c,b,d,e,
以给定权重值5,6,17,18,25,30,为叶结点,建立一棵哈夫曼树,该树的中序遍历序列为 1
A. 5,11,28,6,17,58,30,101,18,43,25
B. 5,11,6,28,17,58,30,101,18,43,25
C. 5,11,6,28,101,58,30,17,18,43,25
D. 5,11,6,28,17,58,30,101,18,25,43
权重值为6的叶结点的哈夫曼为 .
A. 1001 B. 011 C.001 D.0001
以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)完成程序中的空格
typedef struct Bnode
{ int key;
struct Bnode *left;
struct Bnode *right;
} Bnode;
Bnode *BSearch(Bnode *bt, int k)
/* bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/
{ Bnode *p;
if(bt== __(1)__)
return (bt);
p=bt;
while(p->key!= __(2)__)
{ if(k<p->key)
__(3)__;
else __(4)__;
if(p==NULL) break;
}
return(__(5)__;
}
以下程序是折半插入排序的算法
设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,程序是要把a[i] 插入到已经有序的序列a[1],…a[i-1]中。
void binsort (NODE a[ ],int n)
{ int x,i,j,s,k,m;
for (i=2;i<=__(1)__;i++)
{ a[0]=a[i];
x= a[i].key;
s=1;
j=i-1;
while (s<=j)
{ m=__(2)__
if( x<a[m].key)
__(3)__
else
__(4)__
}
for ( k=i-1;k>=j+1;k- -)
__(5)__=a[k];
a[j+1]=a[0];
}
}
设查找表为(1,10,11,14,23,27,29,55,68),出对上述查找表进行折半查找所对应的判定树,为了成功查找
到元素14.需要依次与元素 进行比较。
A.23,10.1.148.23.29,27.14C.23.10,11 14 D.23.29.55,14
在等概率条件下,成功查找的平均比较次数为
A.24/9
B.25/9
C.3
D.2.5
(1)一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序的方法建立的初始堆为
《堆项元素是最小元素,采用树的形式建堆]。
A 39,41 57 80.47 46B.39,41 46.80.47.57
C.39.47.46.80.41 .57D.39.41.57.80.46,47
输出堆顶元素后,调整后的堆为
A.41,47,46.80.57
C.41.57.80.47.46
8.41,57,46.80.47
D.41.80.46.47.57
对关键字序列(56,51,71,54,46,106),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果
为
A.46.51.56.5471106
8.56.51.54.46.71.106
C.46,51 54.56,71 106
D.56.51.46.54.71,106
一组记录的关键字序列为( 60.47,80,57,39,41,46.30,利用归并排序的方法经过(2.2)归并的结果序列为 D。
A.(30.57.60.80.47 39 ,41,46 )
B.(47.60.57.80.30.39,41.46 )
C.(41.57.60.80.30.39.47.46 )
D.(47,57,6080,30,39,41,46 )
(1)对关键字席列(36,69,46,28,30,74)采用快速排序,以第一个关键字为分割元素,经过一次划分后的结果
序列为 D
A.30,28 ,46.36.69 74B.28,30 .36 .46.69 74C.28,30 .46 .36 . 69 74D.30 ,28 36 ,46 ,69 74
用冒泡法对上述序列排序,经两趟冒泡的结果序列为 A
A.36.28.30.46.69.74
C.38.36.30.46.69.74
8.36.46.28.20.69.74
D.28.36.30.46.69.74
一组记录的关键字序列为(45,40,65,43,35,951写出利用快速排序的方法,以第一个记录为基准得到的一趟划分的结果为 C
A35 40 65 45 35 95B.35 40 65 43 45 95
C35 40 43 45 65 95
D 35 40 45 43 65 95
A. e B. c C. b D. a
后序遍历序列为 2 。
A. e,d,b,c,a B. c,a,b,,d,e C. a,b,d,e,c D. a.c,b,d,e,
以给定权重值5,6,17,18,25,30,为叶结点,建立一棵哈夫曼树,该树的中序遍历序列为 1
A. 5,11,28,6,17,58,30,101,18,43,25
B. 5,11,6,28,17,58,30,101,18,43,25
C. 5,11,6,28,101,58,30,17,18,43,25
D. 5,11,6,28,17,58,30,101,18,25,43
权重值为6的叶结点的哈夫曼为 .
A. 1001 B. 011 C.001 D.0001
以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)完成程序中的空格
typedef struct Bnode
{ int key;
struct Bnode *left;
struct Bnode *right;
} Bnode;
Bnode *BSearch(Bnode *bt, int k)
/* bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/
{ Bnode *p;
if(bt== __(1)__)
return (bt);
p=bt;
while(p->key!= __(2)__)
{ if(k<p->key)
__(3)__;
else __(4)__;
if(p==NULL) break;
}
return(__(5)__;
}
以下程序是折半插入排序的算法
设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,程序是要把a[i] 插入到已经有序的序列a[1],…a[i-1]中。
void binsort (NODE a[ ],int n)
{ int x,i,j,s,k,m;
for (i=2;i<=__(1)__;i++)
{ a[0]=a[i];
x= a[i].key;
s=1;
j=i-1;
while (s<=j)
{ m=__(2)__
if( x<a[m].key)
__(3)__
else
__(4)__
}
for ( k=i-1;k>=j+1;k- -)
__(5)__=a[k];
a[j+1]=a[0];
}
}
设查找表为(1,10,11,14,23,27,29,55,68),出对上述查找表进行折半查找所对应的判定树,为了成功查找
到元素14.需要依次与元素 进行比较。
A.23,10.1.148.23.29,27.14C.23.10,11 14 D.23.29.55,14
在等概率条件下,成功查找的平均比较次数为
A.24/9
B.25/9
C.3
D.2.5
(1)一组记录的关键字序列为(47,80,57,39,41,46),利用堆排序的方法建立的初始堆为
《堆项元素是最小元素,采用树的形式建堆]。
A 39,41 57 80.47 46B.39,41 46.80.47.57
C.39.47.46.80.41 .57D.39.41.57.80.46,47
输出堆顶元素后,调整后的堆为
A.41,47,46.80.57
C.41.57.80.47.46
8.41,57,46.80.47
D.41.80.46.47.57
对关键字序列(56,51,71,54,46,106),利用快速排序,以第一个关键字为分割元素,经过一次划分后结果
为
A.46.51.56.5471106
8.56.51.54.46.71.106
C.46,51 54.56,71 106
D.56.51.46.54.71,106
一组记录的关键字序列为( 60.47,80,57,39,41,46.30,利用归并排序的方法经过(2.2)归并的结果序列为 D。
A.(30.57.60.80.47 39 ,41,46 )
B.(47.60.57.80.30.39,41.46 )
C.(41.57.60.80.30.39.47.46 )
D.(47,57,6080,30,39,41,46 )
(1)对关键字席列(36,69,46,28,30,74)采用快速排序,以第一个关键字为分割元素,经过一次划分后的结果
序列为 D
A.30,28 ,46.36.69 74B.28,30 .36 .46.69 74C.28,30 .46 .36 . 69 74D.30 ,28 36 ,46 ,69 74
用冒泡法对上述序列排序,经两趟冒泡的结果序列为 A
A.36.28.30.46.69.74
C.38.36.30.46.69.74
8.36.46.28.20.69.74
D.28.36.30.46.69.74
一组记录的关键字序列为(45,40,65,43,35,951写出利用快速排序的方法,以第一个记录为基准得到的一趟划分的结果为 C
A35 40 65 45 35 95B.35 40 65 43 45 95
C35 40 43 45 65 95
D 35 40 45 43 65 95