Bản sao Câu hỏi ôn tập trắc nghiệm môn Cấu trúc dữ liệu và giải thuật | Trường đại học kinh doanh và công nghệ Hà Nội

Câu nào đúng nhất trong các câu sau:. Thuật toán tìm kiếm tuyến tính là thuật toán tiến hành so sánh phần tử cần tìm(x) lần lượt với phần tử thứ nhất, thứ hai…..đến phần tử cuối cùng của mảng cho đến khi gặp được phần tử có khoá cần tìm hoặc đến hết mảng mà không thấy x. b. Thuật toán tìm kiếm tuyến tính là thuật toán rất đơn giản và cổ điển. Tài liệu giúp bạn tham  khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

lOMoARcPSD| 32573545
3
CÂU HỎI TRẮC
NGHIỆM
MÔN
CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Câu 1. Câu nào đúng nhất trong các câu sau:
a. Thuật toán tìm kiếm tuyến tính thuật toán tiến hành so sánh phần tử cần tìm(x) lần
lượt với phần tử thứ nhất, thứ hai…..đến phần tử cuối cùng của mảng cho đến khi gặp
được phần tử có khoá cần tìm hoặc đến hết mảng mà không thấy x.
b. Thuật toán tìm kiếm tuyến tính là thuật toán rất đơn giản và cổ điển.
c. Thuật toán tìm kiếm tuyến nh thuật toán tiến hành so sánh phần tử cần tìm(x) với
các phần tử của mảng cho đến khi gặp phần tử có khoá cần tìm hoặc đến hết mảng mà
không thấy x.
Câu 2. Nhận xét sau đây, nhận xét nào đúng:
a. Giải thuật tìm kiếm tuyến tính không phụ thuộc vào thứ tự các phần tử của mảng, do
vậy đây là phương pháp tổng quát nhất để tìm kiếm trên một dãy số bất kỳ.
b. Thuật toán tìm kiếm tuyến tính dựa vào quan hệ của các phần tử mảng để định hướng
trong quá trình tìm kiếm, do vậy chỉ áp dụng được cho những dãy đã có thứ tự.
c. Giải thuật tìm kiếm tuyến tính phụ thuộc vào thứ tự các phần tử của mảng, do vậy đây
là phương pháp tìm kiếm tổng quát nhất.
lOMoARcPSD| 32573545
4
Câu 3. Giả sử cho dãy số như sau:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Phần tử cần tìm x=7
Kết thúc giải thuật, phần tử X tìm thấy nằm ở vị trí
A. Vị trí 4
B. Ví trí 7
C. Ví trí 12
D. Vị trí 4, 7, và 12
Câu 4. Xét mảng các số nguyên có nội dung sau:
-9
-9
-9
-9
0
3
7
7
10
15
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Cần tìm phần tử X= -9 bằng giải thuật tìm kiếm nhị phân. Phần tử -9 ở vị trí thứ mấy được tìm
thấy (vị trí 1, 2 3 hay 4):
A. Vị trí 2
B. Vị trí 1
C. Vị trí 3
D. Vị trí 4 Câu 5.
Cho hàm tìm kiếm tuyến tính như sau
int TimKiem (int M[], int N, int X)
{ int k = 0; M[N] =
X; while (M[k] !=
X) k++;
if (k < N) return
(k);
return (-1);
}
Chọn câu đúng nhất:
a. Hàm sẽ trả về 0 nếu không tìm thấy phần tử có giá trị là X
b. Hàm sẽ trả về 1 nếu tìm thấy phần tử có giá trị lả X
c. Hàm sẽ trả về -1 nếu không tìm thấy phần tử có giá trị là X
d. Hàm sẽ trả về 1 nếu không tìm thấy phần tử có giá trị lả X Câu 6.
Xét thủ tục sau: int TimKiemNP (int M[], int First,
int Last, int X)
{ if (First > Last) return
(-1);
int Mid = (First +
Last)/2; if (X ==
M[Mid]) return (Mid);
if (X < M[Mid]) return(TimKiemNP (M, First, Mid
1, X));
else return(TimKiemNP (M, Mid + 1, Last, X));
}
Lựa chọn câu đúng nhất để mô tả thủ tục trên
8
2
8
3
7
6
4
lOMoARcPSD| 32573545
5
a. Thủ tục hỗ trợ tìm kiếm phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ First
đến chỉ số Last
b. Thủ tục hỗ trợ tìm kiếm đệ quy phần tử giá trị là X trên mảng các phần tử từ chỉ số
từ First đến chỉ số Last
c. Thủ tục hỗ trợ tìm kiếm đệ quy phần tử giá trị X trên mảng các phần tử từ chỉ số
từ Last đến chỉ số First
d. Thủ tục hỗ trợ tìm kiếm không đệ quy phần tử có giá trị là X trên mảng các phần tử từ
chỉ số từ Last đến chỉ số First
Câu 7: A và B chơi trò chơi đoán số, thể lệ như sau:
A nghĩ trong đầu 1 số nguyên dương X nằm trong khoảng từ 0 đến 100.
B phải đoán xem A đang nghĩ số bao nhiêu bằng cách đặt câu hỏi bạn cho A
A phải trả lời trung thực bằng 1 trong các đáp án: Lớn hơn, nhỏ hơn, bằng
Hỏi B phải hỏi ít nhất mấy lần dùng phương pháp tìm kiếm B thể đoán
đúng số A đang nghĩ:
A. 7 lần hỏi và dùng tìm kiếm nhị phân
B. X lần hỏi và dùng phương pháp tìm kiếm tuần tự C.
Không thể đoán được A đang nghĩ trong đầu số gì
D. Mất 100 lần hỏi.
Câu 8
Cho đoạn chương trình sau:
Int timkiem(int a[], int N, int x)
{
Int i=0;
While ((i<N)&&(a[i]!=x) i++;
If (i= =N) return -1;
Else return i;
}
Với mảng a= {5,10,20,40,68, 86}; N=6; x=20. Đoạn chương trình trên cho lại giá trị là:
a. -1 b. 1 c. 3 d. 6
Câu 9.
Cho đoạn chương trình sau:
Int timkiemtuantu(int a[], int N, int x)
{
Int i=0; a[N]=x;
while (a[i]!=x) i++;
lOMoARcPSD| 32573545
6
if (i= = N ) return -
1;
else
return i ;
}
Với tham số thực như sau a={4,4,6,7,8,9}; N=6; x= 4. Chương trình trên sẽ cho lại giá trị là:
a. -1 b. 1 c. 4 d. 2
Câu 10.
Cho đoạn chương trình như sau:
Int timkiem_NP(int a[], int N, int x)
{
Int left=0, right=N-1, mid;
Do
{ mid = (eft+right)/2;
if(x=a[mid]) return mid; else
if(x<a[mid]) right= mid- 1;
else left= mid+1;
} while (left<=right);
Return -1
}
Với tham số thực truyền vào hàm trên như sau: a={20,85, 90, 68, 78, 90}; x= 90 đoạn
chương trình trên sẽ trả lại giá trị mid bằng bao nhiêu?
a. -1 b. 2 c. 5 d. 6
Câu 11.
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {-3, -3, 15, -3}; n= 4; x= -3:
int FindX(int a[], int n, int x)
{int i;
for (i= n; i>= 1; i--) if (a[i]==x) return (i);
return (-1);
}
A. 1
B. 2
C. 3
D. 4
lOMoARcPSD| 32573545
7
Câu 12. Tư tưởng chính của giải thuật chọn trực tiếp là:
a. Ở lượt thứ i ta sẽ chọn trong dãy a[i], a[i+1], …, a[n] phần tử nhỏ nhất đổi chỗ nó với
a[i]. Như vậy sau j đợt, j khoá nhỏ hơn đã lần ợt các vị trí thứ nhất, thứ 2, …, thứ j theo
đúng thứ tự sắp xếp.
b. Giả sử y A[1], A[2],…, A[n], trong đó i phần tử đầu A[1], …, A[i-1] đã được sắp
xếp. Tìm vị trí để đưa phần tử A[i] vào vị trí thích hợp của đoạn đã được sắp xếp để được dãy
A[1], A[2],…, A[i] có thứ tự.
c. Xuất phát từ cuối y, đổi chỗ các cặp phần tử kề cận để đưa phần tử nhỏ hơn trong cặp
phần tử đó về vị trí đúng đầu dãy hiện hành, sau đó không xét đến nó ở bước tiếp theo. Do vậy
ở lần xử lý thứ i sẽ có vị trí đầu dãy là i (phần tử ở vị trí i ở đúng vị trí).
d. Tại bước thứ i, xét phần tử thứ a[i].Với mỗi phần tử a[i], xét các phần tử a[j] nằm sau nó
( j=i+1…n). Nếu a[i]>a[j] thì đổi chỗ a[i] cho a[j ]
Câu 13. Tư tưởng của 1 giải thuật sắp xếp như sau:
Giả sử y A[1], A[2],…, A[n], trong đó i phần tử đầu A[1], …, A[i-1] đã được sắp xếp.
Tìm vị trí để đưa phần tử A[i] vào vị trí thích hợp của đoạn đã được sắp xếp để được dãy A[1],
A[2],…, A[i] có thứ tự.
Hỏi giải thuật trên có tên gọi là gì: a.
Chèn trực tiếp (Insertion Sort)
b. Chọn trực tiếp (Selection Sort)
c. Nổi bọt (Bubble Sort)
d. Sắp xếp nhanh (Quick Sort)
Câu 14. Đối với thuật toán sắp xếp chọn trực tiếp cho dãy các phần tử sau (10 pt)
16 60 2 25 15 45 5 30 33 20
Cần thực hiện ..................... chọn lựa phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần.
a. 7 lần b. 8 lần c. 9 lần d. 10 lần
Câu 15. Giả sử cần sắp xếp mảng M có N phần tử sau theo phương pháp sắp xếp chèn trực tiếp
11 16 12 75 51 54 5 73 36 52 98
Cần thực hiện ..................... chèn các phần tử vào y con đã thứ tự tăng đứng đầu y M
để sắp xếp mảng M có thứ tự tăng dần.
a. 9 lần b. 10 lần c. 8 lần d. 7 lần
Câu 16. Chọn câu đúng nhất để tả thuật toán sắp xếp nổi bọt (Bubble Sort) trên mảng M
có N phần tử:
a. Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N–1 lần đi thì tất cả các phần t
trong mảng M sẽ có thứ tự tăng.
b. Đi từ đầu mảng về cuối mảng, trong quá trình đi nếu phần tửdưới (đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong
mảng M sẽ có thứ tự tăng.
c. Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới ( đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chcho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong
mảng M sẽ có thứ tự tăng. d. Cả a, b, c đều sai
lOMoARcPSD| 32573545
8
Câu 17. Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử
void BubbleSort(int M[], int N) [1]
{ [2] int Temp; [3] for (int I = 0; I < N-1; I++) [4]
………………………………….. [5] if (M[J] < M[J-1]) [6]
{ [7]
Temp = M[J]; [8]
M[J] = M[J-1]; [9]
M[J-1] = Temp; [10]
} [11] return; [12]
} [13]
Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ [5] của thủ tục
a. for (int J = N-1; J > I; J++)
b. for (int J = N; J < I; J--)
c. for (int J = N-1; J > I; J--)
d. Không có dòng lệnh nào phù hợp, không cần thêm vào thuật toán vẫn chạy đúng
Câu 18. Cho 1 dãy gồm các phần tử như sau:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Sử dụng giải thuật Quick sort để sắp xếp dãy số trên. Giả sử chọn phần tử giữa làm khoá (
phần tử chốt) a[5] thì sau khi phân hoạch thành 2 dãy con, ta được dãy như sau : a. 1, 4, 3, 2, 5,
8, 6, 7, 9, 10
b. 9, 6, 8, 2, 5, 3, 4, 7, 1, 10
c. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
d. 1, 6, 8, 2, 5, 3, 4, 7, 9, 10
Câu 19. Cho 1 dãy gồm các phần tử như sau:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Sử dụng giải thuật Quick sort để sắp xếp dãy số trên. Giả sử chọn phần tử giữa làm khoá (
phần tử chốt) a[5] thì ở lần đổi chỗ đầu tiên ta phải đổi chỗ a. Đổi chỗ A[1] cho A[8]
b. Đổi chỗ A[1] cho A[10]
c. Đổi chỗ A[4] và A[6]
d. Đổi chỗ A[2] cho A[7]
Câu 20. Hiệu quả của giải thuật sắp xếp Quick sort phụ thuộc vào việc chọn phần tử mốc
(khoá). Trường hợp tốt nhất xảy ra nếu mỗi lần phân hoạch đều chọn được phần tử Median (
phần tử trung vị làm khoá). Phần tử Meadian là phần tử :
a. Phần tử lớn hơn (hay bằng) một nửa số phần tử nhỏ hơn (hay bằng) nửa số phần tử còn
lại
b. Phần tử nằm ở giữa dãy
c. Phần tử nằm ở đầu dãy
d. Phần tử nằm ở cuối dãy
6
8
2
7
5
3
4
1
10
14
10
1
7
4
5
2
6
lOMoARcPSD| 32573545
9
Câu 21. Trong các giải thuật sau, thì nhóm các giải thuật nào cùng độ phức tạp tính toán
trung bình là O(n
2
)
a. Quick Sort, Heap Sort và Merge Sort
b. Quick Sort, Heap Sort và Bubble Sort
c. Selection Sort, Heap Sort và Merge Sort
d. Insertion Sort, Bubble Sort và Selection Sort
Câu 22. Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn L là rỗng:
A. (L->left == NULL) B. (L->ìnfor == NULL)
C. (L->next == NULL) D. (L == NULL)
Câu 23. Để truy nhập vào từng phần tử trong danh sách móc nối đơn ta phải bắt đầu từ:
a. Phần tử đầu tiên của danh sách
b. Truy nhập trực tiếp vào phần tử đó giống mảng 1 chiều
c. Thực hiện tìm kiếm nhị phân trên danh sách móc nối đơn
d. Thực hiện tìm kiếm tuần tự từ phần tử cuối dãy
Câu 24. Để tiện cho việc quản lý một danh sách móc nối đơn, ta cần phải quản lý
a. Địa chỉ phần tử đầu danh sách
b. Địa chỉ phần tử cuối danh sách
c. Thành phần thông tin của nút đầu danh sách.
d. Cả a và b
Câu 25. Trong danh sách móc nối đơn, để tìm kiếm một phần tử có khoá X, ta phải thực hiện
tìm kiếm:
a. Tìm kiếm tuyến tính
b. Tìm kiếm nhị phân
c. Tìm kiếm trên cây nhị phân
d. Có thể bắt đầu tìm trên một thành phần bất kỳ.
Câu 26. Giả sử pHead pTail hai con trỏ để trỏ đến phần tử đầu cuối trong danh sách
móc nối đơn. Ban đầu danh sách rỗng. Để tạo danh sách móc nối đơn ta thể sử dụng cách
nào trong các cách sau:
a. Chèn liên tiếp phần từ mới vào sau phần tử đang trỏ bởi pTail (chèn liên tiếp vào
cuối danh sách)
b. Chèn liên tiếp phần tử mới vào đầu danh sách sau nút đang trỏ bởi pHead
c. Chèn liên tiếp phần tử mới vào giữa danh sách
d. Chèn liên tiếp phần tử mới vào trước nút trỏ bởi bởi pTail
Câu 27. Với cấu trúc dliệu của danh sách liên kết đơn lưu trữ thông tin về phòng máy typedef
struct PM
{ int maPM;
int tongsoMay;
} PHONGMAY;
typedef struct Node
{ PHONGMAY Info;
Node * PNext; } OneNode;
typedef OneNode * SLLPointer;
Để quản lý danh sách liên kết đơn bằng phần tử đầu phần tử cuối, cần định nghĩa kiểu dữ
liệu:
a. SLLPointer DanhSach;
b. typedef struct SSLLIST
{ SLLPointer Phead;
lOMoARcPSD| 32573545
10
SLLPointer Ptail;
} LIST;
c. typedef struct SSLLIST
{ SLLPointer Phead;
SLLPointer Ptail;
int total;
} LIST;
d.typedef struct SSLLIST
{ SLLPointer Phead;
int total;
} LIST;
Câu 28. Trong khai báo sau:
Typedef struct SinhVien
{
char Ten[30];
int MaSV;
} ;
Typedef struct SinhVienNODE
{
Sinhvien Info;
SinhvienNODE *PNext;
}SV;
Thành phần con trỏ dùng để trỏ lưu địa chỉ của phần tử kế tiếp trong danh sách móc nối đơn là:
a. PNext
b. Ten
c. MaSV
d. Cả Ten, MaSV và Next.
Câu 30. Trong khai báo
Typedef struct NODE
{ int INFO; struct NODE
*Next;
}
NODE p;
Thì biến p là:
a. Con trỏ dùng để trỏ đến địa chỉ của biến động mà mỗi biến động này gồm 2 thành
phần: Thành phần INFO có giá trị nguyên và thành phần con trỏ Next
b. Là địa chỉ của 1 nút (phần tử) trong danh sách móc nối
c. Một nút (phần tử) trong danh sách móc nối
d. Một biến thuộc kiểu cấu trúc không được cấp phát vùng.
Câu 31. Giải thuật Chèn phần tử có trường thông tin là X vào đầu danh sách thì thứ tự các thao
tác sẽ là:
lOMoARcPSD| 32573545
11
Ở đây:
Getnode(P) là thủ tục xin cấp phát một biến động và cho con trỏ P trở tới
Info: Thành phần thông tin (trường thông tin hay dữ liệu) của nút một nút trong danh sách
pnext: Thành phần con trỏ dùng để móc nối đến biến động đứng sau trong danh sách l:
danh sách
a. p= Getnode(X); p->pnext = l.Head→pnext; l.Head = p;
b. l.Head→pnext=p; p→pnext=l.head→pnext; p=Getnode(X);
c. p = Getnode(X); p→pnext=l.head→pnext; l.head→pnext=p;
d. p→pnext =l.head→pnext; l.head→pnext=p; p=getnode(X);
Câu 32. Giải thuật Chèn phần tử trường thông tin X vào Cuối danh sách thì thứ tự các
thao tác sẽ là:
Ở đây: Thủ tục cấp phát một biến động và cho con trỏ p trỏ tới: Getnode(x)
pnext: Thành phần con trỏ dùng để móc nối đến biến động đứng sau trong danh sách
l: danh sách
a. p=Getnode(X); l.PTail->pnext = new_ele; l.Tail = new_ele ;
b. l.PTail->pnext = new_ele; l.Tail = new_ele ; p=Getnode(X);
c. l.Tail = new_ele; l.PTail->pnext = new_ele ; p=Getnode(X);
d. l.PTail->pnext = new_ele ; p=Getnode(X); l.Tail = new_ele; Câu 33.
Thao tác nào dưới đây thực hiện trên ngăn xếp (stack):
A. Thêm và loại bỏ phần tử luôn thực B. Thêm và loại bỏ phần tử có thể thực hiện tại vị trí
đỉnh (top) hiện tại vị trí bất kỳ
C. Thêm phần tử vào vị trí bất kỳ D. Loại bỏ phần tử tại vị trí bất kỳ
Câu 34.
Thao tác nào dưới đây thực hiện trên hàng đợi (queue):
A. Thêm phần tử vào lối sau B. Loại bỏ phần tử ở lối sau
C. Thêm phần tử vào lối trước D. Thêm và loại bỏ phần tử tại vị trí bất kỳ
Câu 35. Kiểu cấu trúc dữ liệu Queue hoạt động theo cơ chế nào
a.FIFO.
b.LIFO.
c.LOFI.
lOMoARcPSD| 32573545
12
d.FOFI.
Câu 36. Cấu trúc dữ liệu nào tương ứng với LIFO
a.Queue
b.Linked List
c.Tree
d. Stack
Câu 37. Bậc của một nút là:
a. Số cây con của nút đó
b. Là tổng số nút lá của cây đó
c. Là tổng số tất cả các nút thuộc cây nhận nút đó làm gốc
d. Không có đáp án đúng
Câu 38. Cây nhị phân là:
a. y mà mỗi nút có tối đa 2 cây con
b. y mà tổng số nút của nó là bội của 2
c. Mỗi nút không phải nút lá có đúng 2 con
d. Bậc của mọi nút bằng 2.
Câu 39. Cho cây nhị phân như hình vẽ
Kết quả duyệt các phép duyệt trước, duyệt giữa, duyệt sau là:
a. Duyệt trước: A, B, D, C, E; duyệt giữa B, D, A, E, C; duyệt sau: D, B, E, C, A
b. Duyệt trước: A, B, D, C, E; duyệt giữa A, B, C, D, E; duyệt sau: D, B, A, E, C
c. Duyệt trước: D, B, A, C, E; duyệt giữa B, D, A, E, C; duyệt sau: E, C, A, B, D d. Kết
quả khác
Câu 40. Cây nhị phân tìm kiếm là cây nhị phân mà:
a. Tại mỗi nút, khoá của nút đang xét lớn hơn mọi nút thuộc y con trái nhỏ hơn
khoá của mọi nút thuộc cây con phải
b. Khoá của nút cha luôn lớn hơn khoá của các nút con
c. Là cây thoả mãn điều kiện nào đó cho trước
d. Mọi đáp án đều sai.
Câu 41. Cho 4 cây nhị phân, cây nào sau đây là cây nhị phân tìm kiếm:
A
B
C
A
D
A
E
A
lOMoARcPSD| 32573545
13
a. y NP a b. Cây NP b c. Cây NP d d. Cây NP c
Câu 41. Khi tìm kiếm nút có giá trị khoá là X trong cây nhị phân tìm kiếm với nút
gốc R gía trị khoá K. Nếu X>K thì ta phải tiếp tục tìm X : a. y con phải
của nút gốc R
b. Cây con trái của nút gốc R
c. X có thể nằm bất kỳ đâu trong cây, do vậy phải tìm trên tất cả mọi nút
d. Không có đáp án đúng.
Câu 42.
Giả sử các nút trên cây nhị phân tìm kiếm là giá trị số. Khi duyệt cây theo thứ tự
giữa ta sẽ được:
a. Dãy số giảm dần
b. y số tăng dần
c. Dãy số bất k
d. y số mà nút gốc sẽ có giá trị lớn nhất.
Câu 43.
Cây cân bằng là:
a. y nhị phân có số nút thuộc cây con trái bằng số nút thuộc cây con phải
b. y nhị phân mà giá trị khoá của nút gốc bằng tổng giá trị các khoá của cây con
trái và cây con phải.
c. y nhị phân m kiếm tại mỗi nút, số nút của cây con trái chênh lệch không
quá 1 so với số nút của cây con phải
d. Là cây nhị phân tìm kiếm thông thường. Câu 44.
Ta có thể tạo một cây nhị phân tìm kiếm bằng cách:
a. Lặp đi lặp lại quá trình thêm 1 phần tử vào một cây rỗng
b. Chọn 1 phần tử bất kỳ làm gốc. Các phần tử có giá trị nhỏ hơn gốc được đưa
sang trái, các phần tử có giá trị lớn hơn gốc đưa sang cây con phải c. Phải tạo cây
nhị phân tìm kiếm tuỳ theo yêu cầu của bài toán
d. Không có đáp án đúng.
Câu 45.
Cho kết quả của phép phép duyệt trước, duyệt giữa như sau:
Duyệt trước: A, B, K, E, C
Duyệt giữa: K, B, E, A, C
Khi đó kết quả phép duyệt sau sẽ là:
a. Không thể xác định được
b. K, B, E, C, A
3
4
7
8
9
C
9
4
7
8
4
D
lOMoARcPSD| 32573545
14
c. A, B, C, K, E
d. K, E, B, C, A.
Câu 46.
Cho kết quả của phép phép duyệt sau và duyệt giữa như sau:
Duyệt sau: D, E, B, C, A
Duyệt giữa: D, B, E, A, C
Khi đó kết quả phép duyệt trước sẽ là:
a. A, B, D, E, C
b. Không thể xác định được
c. D, E, B, C, A
d. D, B, E, C, A Câu 47.
Để huỷ toàn bộ cây nhị phân tìm kiếm ta có thể thực hiện thông qua thao tác duyệt cây
theo thứ tự sau, nghĩa là;
a. Huỷ cây con trái, cây con phải rồi mới huỷ gốc
b. Huỷ cây con phải, cây con trái rồi mới huỷ gốc
c. Huỷ mọi cây con trái rồi mới huỷ gốc
d. Chỉ cần hu nút gốc vì cây mất gốc thì không thể tồn tại được.
Câu 48. Cho cây biểu thức sau
Chọn biểu thức tương ứng với cây
a. (2 * (4 + (5 + 3)))
b. (4 * (2+ (5 + 3)))
c. (2 * (3 + (5 +4)))
d. (2 * (5 + (4+ 3))) Câu 49.
Cho cây nhị phân như sau
lOMoARcPSD| 32573545
15
Với cách duyêt Inorder (Left – Root – Right) cho ra kết quả là dãy nào? Tìm lựạ chọn
đúng nhất
a. 13
2
169
20
11
40
55
22
90
50
34
b. 13
2
55
40
169
11
20
34
50
90
22
c. 34
55
2
13
40
11
169
20
50
90
22
d. Cả a, b, c đều sai.
Câu 50. Thêm phần tử có vùng giá trị là 44 của y nhị phân m kiếm cân bằng sẽ làm cây mất
cân bằng
Sau khi thêm, cây được cân bằng lại
Đáp án là:
a.
b.
c. Cả a, b đều sai.
d. Cả a, b đều đúng.
lOMoARcPSD| 32573545
16
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
1
a
6
b
11
d
16
a
21
d
2
a
7
a
12
a
17
c
22
d
3
a
8
c
13
a
18
a
23
a
4
a
9
b
14
c
19
a
24
d
5
c
10
b
15
d
20
a
25
a
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
Câu
Đ.A
26
a
31
a
36
d
41
b
45
d
27
c
32
a
37
a
41
a
46
a
28
a
33
a
38
a
42
b
47
a
29
34
a
39
a
43
c
48
a
30
a
35
a
40
a
44
a
49
b
50
a
| 1/14

Preview text:

lOMoAR cPSD| 32573545 CÂU HỎI TRẮC NGHIỆM MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Câu 1. Câu nào đúng nhất trong các câu sau:
a. Thuật toán tìm kiếm tuyến tính là thuật toán tiến hành so sánh phần tử cần tìm(x) lần
lượt với phần tử thứ nhất, thứ hai…..đến phần tử cuối cùng của mảng cho đến khi gặp
được phần tử có khoá cần tìm hoặc đến hết mảng mà không thấy x.
b. Thuật toán tìm kiếm tuyến tính là thuật toán rất đơn giản và cổ điển.
c. Thuật toán tìm kiếm tuyến tính là thuật toán tiến hành so sánh phần tử cần tìm(x) với
các phần tử của mảng cho đến khi gặp phần tử có khoá cần tìm hoặc đến hết mảng mà không thấy x.
Câu 2. Nhận xét sau đây, nhận xét nào đúng:
a. Giải thuật tìm kiếm tuyến tính không phụ thuộc vào thứ tự các phần tử của mảng, do
vậy đây là phương pháp tổng quát nhất để tìm kiếm trên một dãy số bất kỳ.
b. Thuật toán tìm kiếm tuyến tính dựa vào quan hệ của các phần tử mảng để định hướng
trong quá trình tìm kiếm, do vậy chỉ áp dụng được cho những dãy đã có thứ tự.
c. Giải thuật tìm kiếm tuyến tính phụ thuộc vào thứ tự các phần tử của mảng, do vậy đây
là phương pháp tìm kiếm tổng quát nhất. 3 lOMoAR cPSD| 32573545
Câu 3. Giả sử cho dãy số như sau: 4 6 6 7 3 8 7 2 8 7
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Phần tử cần tìm x=7
Kết thúc giải thuật, phần tử X tìm thấy nằm ở vị trí A. Vị trí 4 B. Ví trí 7 C. Ví trí 12 D. Vị trí 4, 7, và 12
Câu 4. Xét mảng các số nguyên có nội dung sau: -9 -9 -9 -9 0 3 7 7 10 15
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Cần tìm phần tử X= -9 bằng giải thuật tìm kiếm nhị phân. Phần tử -9 ở vị trí thứ mấy được tìm
thấy (vị trí 1, 2 3 hay 4): A. Vị trí 2 B. Vị trí 1 C. Vị trí 3 D. Vị trí 4 Câu 5.
Cho hàm tìm kiếm tuyến tính như sau
int TimKiem (int M[], int N, int X) { int k = 0; M[N] = X; while (M[k] != X) k++; if (k < N) return (k); return (-1); } Chọn câu đúng nhất: a.
Hàm sẽ trả về 0 nếu không tìm thấy phần tử có giá trị là X b.
Hàm sẽ trả về 1 nếu tìm thấy phần tử có giá trị lả X c.
Hàm sẽ trả về -1 nếu không tìm thấy phần tử có giá trị là X d.
Hàm sẽ trả về 1 nếu không tìm thấy phần tử có giá trị lả X Câu 6.
Xét thủ tục sau: int TimKiemNP (int M[], int First, int Last, int X) { if (First > Last) return (-1); int Mid = (First + Last)/2; if (X == M[Mid]) return (Mid);
if (X < M[Mid]) return(TimKiemNP (M, First, Mid – 1, X));
else return(TimKiemNP (M, Mid + 1, Last, X)); }
Lựa chọn câu đúng nhất để mô tả thủ tục trên 4 lOMoAR cPSD| 32573545
a. Thủ tục hỗ trợ tìm kiếm phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ First đến chỉ số Last
b. Thủ tục hỗ trợ tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số
từ First đến chỉ số Last
c. Thủ tục hỗ trợ tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số
từ Last đến chỉ số First
d. Thủ tục hỗ trợ tìm kiếm không đệ quy phần tử có giá trị là X trên mảng các phần tử từ
chỉ số từ Last đến chỉ số First
Câu 7: A và B chơi trò chơi đoán số, thể lệ như sau:
A nghĩ trong đầu 1 số nguyên dương X nằm trong khoảng từ 0 đến 100.
B phải đoán xem A đang nghĩ số bao nhiêu bằng cách đặt câu hỏi bạn cho A
A phải trả lời trung thực bằng 1 trong các đáp án: Lớn hơn, nhỏ hơn, bằng
Hỏi B phải hỏi ít nhất là mấy lần và dùng phương pháp tìm kiếm gì mà B có thể đoán đúng số A đang nghĩ:
A. 7 lần hỏi và dùng tìm kiếm nhị phân
B. X lần hỏi và dùng phương pháp tìm kiếm tuần tự C.
Không thể đoán được A đang nghĩ trong đầu số gì D. Mất 100 lần hỏi. Câu 8
Cho đoạn chương trình sau:
Int timkiem(int a[], int N, int x) { Int i=0;
While ((iIf (i= =N) return -1; Else return i; }
Với mảng a= {5,10,20,40,68, 86}; N=6; x=20. Đoạn chương trình trên cho lại giá trị là: a. -1 b. 1 c. 3 d. 6 Câu 9.
Cho đoạn chương trình sau:
Int timkiemtuantu(int a[], int N, int x) { Int i=0; a[N]=x; while (a[i]!=x) i++; 5 lOMoAR cPSD| 32573545 if (i= = N ) return - 1; else return i ; }
Với tham số thực như sau a={4,4,6,7,8,9}; N=6; x= 4. Chương trình trên sẽ cho lại giá trị là: a. -1 b. 1 c. 4 d. 2 Câu 10.
Cho đoạn chương trình như sau:
Int timkiem_NP(int a[], int N, int x) { Int left=0, right=N-1, mid; Do { mid = (eft+right)/2; if(x=a[mid]) return mid; else if(xelse left= mid+1; } while (left<=right); Return -1 }
Với tham số thực truyền vào hàm trên như sau: a={20,85, 90, 68, 78, 90}; x= 90 đoạn
chương trình trên sẽ trả lại giá trị mid bằng bao nhiêu? a. -1 b. 2 c. 5 d. 6 Câu 11.
Kết quả nào đúng khi thực hiện giải thuật sau với a[]= {-3, -3, 15, -3}; n= 4; x= -3:
int FindX(int a[], int n, int x) A. 1 {int i; B. 2
for (i= n; i>= 1; i--) if (a[i]==x) return (i); C. 3 return (-1); D. 4 } 6 lOMoAR cPSD| 32573545
Câu 12. Tư tưởng chính của giải thuật chọn trực tiếp là: a.
Ở lượt thứ i ta sẽ chọn trong dãy a[i], a[i+1], …, a[n] phần tử nhỏ nhất và đổi chỗ nó với
a[i]. Như vậy sau j đợt, j khoá nhỏ hơn đã lần lượt ở các vị trí thứ nhất, thứ 2, …, thứ j theo
đúng thứ tự sắp xếp. b.
Giả sử có dãy A[1], A[2],…, A[n], trong đó i phần tử đầu A[1], …, A[i-1] đã được sắp
xếp. Tìm vị trí để đưa phần tử A[i] vào vị trí thích hợp của đoạn đã được sắp xếp để được dãy
A[1], A[2],…, A[i] có thứ tự. c.
Xuất phát từ cuối dãy, đổi chỗ các cặp phần tử kề cận để đưa phần tử nhỏ hơn trong cặp
phần tử đó về vị trí đúng đầu dãy hiện hành, sau đó không xét đến nó ở bước tiếp theo. Do vậy
ở lần xử lý thứ i sẽ có vị trí đầu dãy là i (phần tử ở vị trí i ở đúng vị trí). d.
Tại bước thứ i, xét phần tử thứ a[i].Với mỗi phần tử a[i], xét các phần tử a[j] nằm sau nó
( j=i+1…n). Nếu a[i]>a[j] thì đổi chỗ a[i] cho a[j ]
Câu 13. Tư tưởng của 1 giải thuật sắp xếp như sau:
Giả sử có dãy A[1], A[2],…, A[n], trong đó i phần tử đầu A[1], …, A[i-1] đã được sắp xếp.
Tìm vị trí để đưa phần tử A[i] vào vị trí thích hợp của đoạn đã được sắp xếp để được dãy A[1],
A[2],…, A[i] có thứ tự.
Hỏi giải thuật trên có tên gọi là gì: a.
Chèn trực tiếp (Insertion Sort)
b. Chọn trực tiếp (Selection Sort) c. Nổi bọt (Bubble Sort)
d. Sắp xếp nhanh (Quick Sort)
Câu 14. Đối với thuật toán sắp xếp chọn trực tiếp cho dãy các phần tử sau (10 pt) 16 60 2 25 15 45 5 30 33 20
Cần thực hiện ..................... chọn lựa phần tử nhỏ nhất để sắp xếp mảng M có thứ tự tăng dần. a. 7 lần
b. 8 lần c. 9 lần d. 10 lần
Câu 15. Giả sử cần sắp xếp mảng M có N phần tử sau theo phương pháp sắp xếp chèn trực tiếp 11 16 12 75 51 54 5 73 36 52 98
Cần thực hiện ..................... chèn các phần tử vào dãy con đã có thứ tự tăng đứng đầu dãy M
để sắp xếp mảng M có thứ tự tăng dần. a. 9 lần b. 10 lần c. 8 lần d. 7 lần
Câu 16. Chọn câu đúng nhất để mô tả thuật toán sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử: a.
Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N–1 lần đi thì tất cả các phần tử
trong mảng M sẽ có thứ tự tăng. b.
Đi từ đầu mảng về cuối mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong
mảng M sẽ có thứ tự tăng. c.
Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới ( đứng phía sau) nhỏ
hơn phần tử đứng ngay trên (trước) nó thì hai phần tử này sẽ được đổi chỗ cho nhau. Sau mỗi
lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Sau N lần đi thì tất cả các phần tử trong
mảng M sẽ có thứ tự tăng. d. Cả a, b, c đều sai 7 lOMoAR cPSD| 32573545
Câu 17. Hàm mô tả sắp xếp nổi bọt (Bubble Sort) trên mảng M có N phần tử
void BubbleSort(int M[], int N) [1] { [2] int Temp;
[3] for (int I = 0; I < N-1; I++) [4]
………………………………….. [5] if (M[J] < M[J-1]) [6] { [7] Temp = M[J]; [8] M[J] = M[J-1]; [9] M[J-1] = Temp; [10] } [11] return; [12] } [13]
Lệnh nào sau đây sẽ được đưa vào dòng lệnh thứ [5] của thủ tục
a. for (int J = N-1; J > I; J++)
b. for (int J = N; J < I; J--)
c. for (int J = N-1; J > I; J--)
d. Không có dòng lệnh nào phù hợp, không cần thêm vào thuật toán vẫn chạy đúng
Câu 18. Cho 1 dãy gồm các phần tử như sau: 9 6 8 2 5 3 4 7 1 10
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Sử dụng giải thuật Quick sort để sắp xếp dãy số trên. Giả sử chọn phần tử ở giữa làm khoá (
phần tử chốt) a[5] thì sau khi phân hoạch thành 2 dãy con, ta được dãy như sau : a. 1, 4, 3, 2, 5, 8, 6, 7, 9, 10
b. 9, 6, 8, 2, 5, 3, 4, 7, 1, 10
c. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
d. 1, 6, 8, 2, 5, 3, 4, 7, 9, 10
Câu 19. Cho 1 dãy gồm các phần tử như sau: 6 5 3 4 1 10 14 8 2 7
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
Sử dụng giải thuật Quick sort để sắp xếp dãy số trên. Giả sử chọn phần tử ở giữa làm khoá (
phần tử chốt) a[5] thì ở lần đổi chỗ đầu tiên ta phải đổi chỗ a. Đổi chỗ A[1] cho A[8]
b. Đổi chỗ A[1] cho A[10] c. Đổi chỗ A[4] và A[6] d. Đổi chỗ A[2] cho A[7]
Câu 20. Hiệu quả của giải thuật sắp xếp Quick sort phụ thuộc vào việc chọn phần tử mốc
(khoá). Trường hợp tốt nhất xảy ra nếu mỗi lần phân hoạch đều chọn được phần tử Median (
phần tử trung vị làm khoá). Phần tử Meadian là phần tử :
a. Phần tử lớn hơn (hay bằng) một nửa số phần tử và nhỏ hơn (hay bằng) nửa số phần tử còn lại
b. Phần tử nằm ở giữa dãy
c. Phần tử nằm ở đầu dãy
d. Phần tử nằm ở cuối dãy 8 lOMoAR cPSD| 32573545
Câu 21. Trong các giải thuật sau, thì nhóm các giải thuật nào có cùng độ phức tạp tính toán trung bình là O(n2)
a. Quick Sort, Heap Sort và Merge Sort
b. Quick Sort, Heap Sort và Bubble Sort
c. Selection Sort, Heap Sort và Merge Sort
d. Insertion Sort, Bubble Sort và Selection Sort
Câu 22. Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn L là rỗng:
A. (L->left == NULL) B. (L->ìnfor == NULL)
C. (L->next == NULL) D. (L == NULL)
Câu 23. Để truy nhập vào từng phần tử trong danh sách móc nối đơn ta phải bắt đầu từ:
a. Phần tử đầu tiên của danh sách
b. Truy nhập trực tiếp vào phần tử đó giống mảng 1 chiều
c. Thực hiện tìm kiếm nhị phân trên danh sách móc nối đơn
d. Thực hiện tìm kiếm tuần tự từ phần tử cuối dãy
Câu 24. Để tiện cho việc quản lý một danh sách móc nối đơn, ta cần phải quản lý
a. Địa chỉ phần tử đầu danh sách
b. Địa chỉ phần tử cuối danh sách
c. Thành phần thông tin của nút đầu danh sách. d. Cả a và b
Câu 25. Trong danh sách móc nối đơn, để tìm kiếm một phần tử có khoá X, ta phải thực hiện tìm kiếm: a. Tìm kiếm tuyến tính b. Tìm kiếm nhị phân
c. Tìm kiếm trên cây nhị phân
d. Có thể bắt đầu tìm trên một thành phần bất kỳ.
Câu 26. Giả sử pHead và pTail là hai con trỏ để trỏ đến phần tử đầu và cuối trong danh sách
móc nối đơn. Ban đầu danh sách rỗng. Để tạo danh sách móc nối đơn ta có thể sử dụng cách nào trong các cách sau:
a. Chèn liên tiếp phần từ mới vào sau phần tử đang trỏ bởi pTail (chèn liên tiếp vào cuối danh sách)
b. Chèn liên tiếp phần tử mới vào đầu danh sách sau nút đang trỏ bởi pHead
c. Chèn liên tiếp phần tử mới vào giữa danh sách
d. Chèn liên tiếp phần tử mới vào trước nút trỏ bởi bởi pTail
Câu 27. Với cấu trúc dữ liệu của danh sách liên kết đơn lưu trữ thông tin về phòng máy typedef struct PM { int maPM; int tongsoMay; } PHONGMAY; typedef struct Node { PHONGMAY Info; Node * PNext; } OneNode; typedef OneNode * SLLPointer;
Để quản lý danh sách liên kết đơn bằng phần tử đầu và phần tử cuối, cần định nghĩa kiểu dữ liệu: a. SLLPointer DanhSach; b. typedef struct SSLLIST { SLLPointer Phead; 9 lOMoAR cPSD| 32573545 SLLPointer Ptail; } LIST; c. typedef struct SSLLIST { SLLPointer Phead; SLLPointer Ptail; int total; } LIST; d.typedef struct SSLLIST { SLLPointer Phead; int total; } LIST;
Câu 28. Trong khai báo sau: Typedef struct SinhVien { char Ten[30]; int MaSV; } ; Typedef struct SinhVienNODE { Sinhvien Info; SinhvienNODE *PNext; }SV;
Thành phần con trỏ dùng để trỏ lưu địa chỉ của phần tử kế tiếp trong danh sách móc nối đơn là: a. PNext b. Ten c. MaSV d. Cả Ten, MaSV và Next.
Câu 30. Trong khai báo Typedef struct NODE { int INFO; struct NODE *Next; } NODE p; Thì biến p là:
a. Con trỏ dùng để trỏ đến địa chỉ của biến động mà mỗi biến động này gồm 2 thành
phần: Thành phần INFO có giá trị nguyên và thành phần con trỏ Next
b. Là địa chỉ của 1 nút (phần tử) trong danh sách móc nối
c. Một nút (phần tử) trong danh sách móc nối
d. Một biến thuộc kiểu cấu trúc không được cấp phát vùng.
Câu 31. Giải thuật Chèn phần tử có trường thông tin là X vào đầu danh sách thì thứ tự các thao tác sẽ là: 10 lOMoAR cPSD| 32573545 Ở đây:
Getnode(P) là thủ tục xin cấp phát một biến động và cho con trỏ P trở tới
Info: Thành phần thông tin (trường thông tin hay dữ liệu) của nút một nút trong danh sách
pnext: Thành phần con trỏ dùng để móc nối đến biến động đứng sau trong danh sách l: danh sách
a. p= Getnode(X); p->pnext = l.Head→pnext; l.Head = p;
b. l.Head→pnext=p; p→pnext=l.head→pnext; p=Getnode(X);
c. p = Getnode(X); p→pnext=l.head→pnext; l.head→pnext=p;
d. p→pnext =l.head→pnext; l.head→pnext=p; p=getnode(X);
Câu 32. Giải thuật Chèn phần tử có trường thông tin là X vào Cuối danh sách thì thứ tự các thao tác sẽ là:
Ở đây: Thủ tục cấp phát một biến động và cho con trỏ p trỏ tới: Getnode(x)
pnext: Thành phần con trỏ dùng để móc nối đến biến động đứng sau trong danh sách l: danh sách a.
p=Getnode(X); l.PTail->pnext = new_ele; l.Tail = new_ele ; b.
l.PTail->pnext = new_ele; l.Tail = new_ele ; p=Getnode(X); c.
l.Tail = new_ele; l.PTail->pnext = new_ele ; p=Getnode(X); d.
l.PTail->pnext = new_ele ; p=Getnode(X); l.Tail = new_ele; Câu 33.
Thao tác nào dưới đây thực hiện trên ngăn xếp (stack):
A. Thêm và loại bỏ phần tử luôn thực B. Thêm và loại bỏ phần tử có thể thực hiện tại vị trí
đỉnh (top) hiện tại vị trí bất kỳ
C. Thêm phần tử vào vị trí bất kỳ
D. Loại bỏ phần tử tại vị trí bất kỳ Câu 34.
Thao tác nào dưới đây thực hiện trên hàng đợi (queue):
A. Thêm phần tử vào lối sau
B. Loại bỏ phần tử ở lối sau
C. Thêm phần tử vào lối trước
D. Thêm và loại bỏ phần tử tại vị trí bất kỳ
Câu 35. Kiểu cấu trúc dữ liệu Queue hoạt động theo cơ chế nào a.FIFO. b.LIFO. c.LOFI. 11 lOMoAR cPSD| 32573545 d.FOFI.
Câu 36. Cấu trúc dữ liệu nào tương ứng với LIFO a.Queue b.Linked List c.Tree d. Stack
Câu 37. Bậc của một nút là:
a. Số cây con của nút đó
b. Là tổng số nút lá của cây đó
c. Là tổng số tất cả các nút thuộc cây nhận nút đó làm gốc
d. Không có đáp án đúng
Câu 38. Cây nhị phân là:
a. Cây mà mỗi nút có tối đa 2 cây con
b. Cây mà tổng số nút của nó là bội của 2
c. Mỗi nút không phải nút lá có đúng 2 con
d. Bậc của mọi nút bằng 2.
Câu 39. Cho cây nhị phân như hình vẽ
Kết quả duyệt các phép duyệt trước, duyệt giữa, duyệt sau là: A B C A D E A A
a. Duyệt trước: A, B, D, C, E; duyệt giữa B, D, A, E, C; duyệt sau: D, B, E, C, A
b. Duyệt trước: A, B, D, C, E; duyệt giữa A, B, C, D, E; duyệt sau: D, B, A, E, C
c. Duyệt trước: D, B, A, C, E; duyệt giữa B, D, A, E, C; duyệt sau: E, C, A, B, D d. Kết quả khác
Câu 40. Cây nhị phân tìm kiếm là cây nhị phân mà:
a. Tại mỗi nút, khoá của nút đang xét lớn hơn mọi nút thuộc cây con trái và nhỏ hơn
khoá của mọi nút thuộc cây con phải
b. Khoá của nút cha luôn lớn hơn khoá của các nút con
c. Là cây thoả mãn điều kiện nào đó cho trước
d. Mọi đáp án đều sai.
Câu 41. Cho 4 cây nhị phân, cây nào sau đây là cây nhị phân tìm kiếm: 12 lOMoAR cPSD| 32573545 C 3 D 9 4 7 4 7 8 9 8 4 a. Cây NP a
b. Cây NP b c. Cây NP d d. Cây NP c
Câu 41. Khi tìm kiếm nút có giá trị khoá là X trong cây nhị phân tìm kiếm với nút
gốc R có gía trị khoá là K. Nếu X>K thì ta phải tiếp tục tìm X ở : a. Cây con phải của nút gốc R
b. Cây con trái của nút gốc R
c. X có thể nằm bất kỳ đâu trong cây, do vậy phải tìm trên tất cả mọi nút
d. Không có đáp án đúng. Câu 42.
Giả sử các nút trên cây nhị phân tìm kiếm là giá trị số. Khi duyệt cây theo thứ tự
giữa ta sẽ được: a. Dãy số giảm dần b. Dãy số tăng dần c. Dãy số bất kỳ
d. Dãy số mà nút gốc sẽ có giá trị lớn nhất. Câu 43. Cây cân bằng là:
a. Cây nhị phân có số nút thuộc cây con trái bằng số nút thuộc cây con phải
b. Là cây nhị phân mà giá trị khoá của nút gốc bằng tổng giá trị các khoá của cây con trái và cây con phải.
c. Cây nhị phân tìm kiếm mà tại mỗi nút, số nút của cây con trái chênh lệch không
quá 1 so với số nút của cây con phải
d. Là cây nhị phân tìm kiếm thông thường. Câu 44.
Ta có thể tạo một cây nhị phân tìm kiếm bằng cách:
a. Lặp đi lặp lại quá trình thêm 1 phần tử vào một cây rỗng
b. Chọn 1 phần tử bất kỳ làm gốc. Các phần tử có giá trị nhỏ hơn gốc được đưa
sang trái, các phần tử có giá trị lớn hơn gốc đưa sang cây con phải c. Phải tạo cây
nhị phân tìm kiếm tuỳ theo yêu cầu của bài toán
d. Không có đáp án đúng. Câu 45.
Cho kết quả của phép phép duyệt trước, duyệt giữa như sau:
Duyệt trước: A, B, K, E, C Duyệt giữa: K, B, E, A, C
Khi đó kết quả phép duyệt sau sẽ là:
a. Không thể xác định được b. K, B, E, C, A 13 lOMoAR cPSD| 32573545 c. A, B, C, K, E d. K, E, B, C, A. Câu 46.
Cho kết quả của phép phép duyệt sau và duyệt giữa như sau: Duyệt sau: D, E, B, C, A Duyệt giữa: D, B, E, A, C
Khi đó kết quả phép duyệt trước sẽ là: a. A, B, D, E, C b.
Không thể xác định được c. D, E, B, C, A d. D, B, E, C, A Câu 47.
Để huỷ toàn bộ cây nhị phân tìm kiếm ta có thể thực hiện thông qua thao tác duyệt cây
theo thứ tự sau, nghĩa là;
a. Huỷ cây con trái, cây con phải rồi mới huỷ gốc
b. Huỷ cây con phải, cây con trái rồi mới huỷ gốc
c. Huỷ mọi cây con trái rồi mới huỷ gốc
d. Chỉ cần huỷ nút gốc vì cây mất gốc thì không thể tồn tại được.
Câu 48. Cho cây biểu thức sau
Chọn biểu thức tương ứng với cây a. (2 * (4 + (5 + 3))) b. (4 * (2+ (5 + 3))) c. (2 * (3 + (5 +4))) d.
(2 * (5 + (4+ 3))) Câu 49. Cho cây nhị phân như sau 14 lOMoAR cPSD| 32573545
Với cách duyêt Inorder (Left – Root – Right) cho ra kết quả là dãy nào? Tìm lựạ chọn đúng nhất a. 13 2 169 20 11 40 55 22 90 50 34 b. 13 2 55 40 169 11 20 34 50 90 22 c. 34 55 2 13 40 11 169 20 50 90 22 d. Cả a, b, c đều sai.
Câu 50. Thêm phần tử có vùng giá trị là 44 của cây nhị phân tìm kiếm cân bằng sẽ làm cây mất cân bằng
Sau khi thêm, cây được cân bằng lại a. b. c. Cả a, b đều sai. d. Cả a, b đều đúng . Đáp án là: 15 lOMoAR cPSD| 32573545 Câu Đ.A Câu Đ.A Câu Đ.A Câu Đ.A Câu Đ.A 1 a 6 b 11 d 16 a 21 d 2 a 7 a 12 a 17 c 22 d 3 a 8 c 13 a 18 a 23 a 4 a 9 b 14 c 19 a 24 d 5 c 10 b 15 d 20 a 25 a Câu Đ.A Câu Đ.A Câu Đ.A Câu Đ.A Câu Đ.A 26 a 31 a 36 d 41 b 45 d 27 c 32 a 37 a 41 a 46 a 28 a 33 a 38 a 42 b 47 a 29 34 a 39 a 43 c 48 a 30 a 35 a 40 a 44 a 49 b 50 a 16