wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Cấu trúc dữ liệu

Total questions: 117

Worksheet time: 59mins

Name
Class
Date
1.

Cấu trúc dữ liệu là gì?

a)

Một thuật toán xử lý dữ liệu

b)

Một cách lưu trữ và tổ chức dữ liệu

c)

Một ngôn ngữ lập trình

d)

Một chương trình phần mềm

2.

Mục tiêu chính của thuật toán là gì?

a)

Tiêu tốn ít bộ nhớ nhất

b)

Đảm bảo tốc độ thực thi nhanh nhất

c)

Giải quyết bài toán trong thời gian và tài nguyên hợp lý

d)

Đảm bảo không có lỗi

3.

Thuật toán là gì?

a)

Một dãy các lệnh được mô tả bằng ngôn ngữ lập trình

b)

Một chuỗi các bước giải quyết bài toán

c)

Một tập hợp các phương pháp giải bài toán phức tạp

d)

Một quy trình lặp đi lặp lại đến khi tìm được kết quả

4.

Độ phức tạp thời gian của thuật toán thường được biểu diễn bằng:

a)

Ký hiệu O lớn

b)

Đơn vị thời gian thực tế

c)

Ký hiệu θ nhỏ

d)

Số lần lặp

5.

Khi nào thuật toán được gọi là tối ưu?

a)

Khi chạy nhanh nhất trong mọi trường hợp

b)

Khi chiếm ít bộ nhớ nhất

c)

Khi đạt hiệu quả tốt nhất với chi phí chấp nhận được

d)

Khi không có lỗi

6.

Tìm kiếm nhị phân yêu cầu danh sách phải có đặc điểm nào?

a)

Được sắp xếp

b)

Không trùng lặp phần tử

c)

Có số phần tử chẵn

d)

Không quan trọng

7.

Đâu là phương pháp đo độ phức tạp thuật toán?

a)

Đếm số lệnh trong chương trình

b)

Đếm số phép toán cơ bản thực hiện

c)

Đo thời gian thực thi thực tế

d)

Đếm số lượng vòng lặp

8.

Độ phức tạp thời gian trong trường hợp xấu nhất được gọi là gì?

a)

Best-case complexity

b)

Average-case complexity

c)

Worst-case complexity

d)

Time complexity

9.

Thuật toán nào có độ phức tạp tốt nhất trong trường hợp tốt nhất?

a)

Tìm kiếm nhị phân

b)

Sắp xếp chọn

c)

Sắp xếp nhanh

d)

Duyệt tuyến tính

10.

Phép toán cơ bản để phân tích độ phức tạp thuật toán là gì?

a)

Thời gian thực thi thực tế

b)

Số phép toán cơ bản thực hiện

c)

Số câu lệnh trong mã nguồn

d)

Số lần gọi đệ quy

11.

Thuật toán nào dưới đây là thuật toán chia để trị (Divide and Conquer)?

a)

Tìm kiếm tuyến tính

b)

Sắp xếp nhanh (Quick Sort)

c)

Sắp xếp chèn (Insertion Sort)

d)

Thuật toán tham lam (Greedy)

12.

Độ phức tạp không gian của thuật toán liên quan đến yếu tố nào?

a)

Bộ nhớ tạm thời cần thiết

b)

Số lần lặp trong vòng lặp

c)

Số lượng câu lệnh thực thi

d)

Tốc độ xử lý của bộ vi xử lý

13.

Ký hiệu Big-O trong phân tích thuật toán được sử dụng để:

a)

Mô tả độ phức tạp trung bình

b)

Mô tả độ phức tạp trường hợp tốt nhất

c)

Mô tả độ phức tạp trường hợp xấu nhất

d)

Mô tả độ phức tạp tổng quát

14.

Giả sử có một thuật toán với độ phức tạp thời gian là T(n)=2n2+3n+5T(n)=2n^2+3n+5 , thì độ phức tạp O lớn là gì?

a)

O(n2)O(n^2)

b)

O(n)O(n)

c)

O(1)O(1)

d)

O(n3)O(n^3)

15.

Phân tích độ phức tạp thuật toán nhằm mục đích:

a)

Tìm thuật toán dễ lập trình nhất

b)

Tìm thuật toán chạy nhanh nhất và chiếm ít bộ nhớ nhất

c)

Tìm thuật toán có ít lỗi nhất

d)

Tìm thuật toán tiết kiệm chi phí triển khai nhất

16.

Thuật toán nào dưới đây có độ phức tạp thời gian tốt nhất để tìm kiếm trên danh sách đã sắp xếp?

a)

Tìm kiếm tuyến tính

b)

Tìm kiếm nhị phân

c)

Tìm kiếm theo băm

d)

Tìm kiếm cây nhị phân tìm kiếm (BST)

17.

Ký hiệu O lớn mô tả điều gì?

a)

Thời gian thực thi thuật toán trên máy tính cụ thể

b)

Độ phức tạp trường hợp tốt nhất

c)

Độ phức tạp trường hợp xấu nhất

d)

Kết quả chính xác của thuật toán

18.

Thuật toán sắp xếp nào dưới đây có độ phức tạp trung bình là O(nlogn)O(n\log n) ?

a)

Sắp xếp chọn (Selection Sort)

b)

Sắp xếp nhanh (Quick Sort)

c)

Sắp xếp bọt (Bubble Sort)

d)

Sắp xếp chèn (Insertion Sort)

19.

Khi kích thước dữ liệu đầu vào tăng, thuật toán nào sẽ bị ảnh hưởng lớn nhất?

a)

O(logn)O(\log n)

b)

O(n)O(n)

c)

O(n2)O(n^2)

20.

Nếu một thuật toán có độ phức tạp T(n)=3n+2T(n)=3n+2 , thì trong ký hiệu O lớn, độ phức tạp là gì?

a)

O(n)O(n)

b)

O(1)O(1)

c)

O(n2)O(n^2)

d)

O(logn)O(\log n)

21.

Thuật toán nào dưới đây là tối ưu nhất để sắp xếp mảng lớn?

a)

Merge Sort

b)

Quick Sort

c)

Heap Sort

d)

Tất cả đều tốt như nhau

22.

Mảng là gì?

a)

Một danh sách các phần tử không đồng nhất

b)

Một danh sách các phần tử có kích thước động

c)

Một danh sách các phần tử có cùng kiểu dữ liệu

d)

Một danh sách các phần tử có thể thay đổi kích thước

23.

Làm thế nào để truy cập phần tử thứ ba trong mảng?

a)

Sử dụng vòng lặp

b)

Sử dụng con trỏ

c)

Sử dụng chỉ số mảng: array[i]

d)

Sử dụng hàm tìm kiếm

24.

Độ phức tạp thời gian của việc truy cập một phần tử trong mảng là gì?

a)

O(1)O(1)

b)

O(n)O(n)

c)

O(logn)O(\log n)

d)

O(n2)O(n^2)

25.

Mảng trong C/C++ được bắt đầu với chỉ số:

a)

1

b)

-1

c)

0

d)

Không cố định

26.

Kích thước mảng trong C phải được xác định:

a)

Trong quá trình biên dịch

b)

Trong lúc chạy chương trình

c)

Bằng con trỏ

d)

Bằng cách sử dụng hàm

27.

Một mảng được khai báo trong C bằng cú pháp nào?

a)

int a[];

b)

int a[10];

c)

int a(10);

d)

int[] a;

28.

Mảng hai chiều thường được dùng để biểu diễn:

a)

Danh sách liên kết

b)

Đồ thị

c)

Bảng dữ liệu

d)

Cây nhị phân

29.

Nếu một mảng có n phần tử, chỉ số hợp lệ của mảng này là:

a)

1 đến n

b)

0 đến n1n-1

c)

1-1 đến n1n-1

d)

0 đến n

30.

Khi khai báo mảng int arr[5]; thì:

a)

Mảng này chứa 5 phần tử, chỉ số từ 1 đến 5

b)

Mảng này chứa 5 phần tử, chỉ số từ 0 đến 4

c)

Mảng này chứa 6 phần tử, chỉ số từ 0 đến 5

d)

Mảng này chứa 5 phần tử, chỉ số bất kỳ

31.

Câu lệnh nào dưới đây gán giá trị 10 cho phần tử thứ ba của mảng arr?

a)

arr[2] = 10;

b)

arr[3] = 10;

c)

arr[10] = 3;

d)

arr = 10;

32.

Khai báo int arr[] = {1, 2, 3, 4}; có nghĩa là gì?

a)

Một mảng động với các phần tử lần lượt là 1, 2, 3, 4

b)

Một mảng có kích thước tự động, với các giá trị ban đầu là 1, 2, 3, 4

c)

Một mảng cố định không thay đổi giá trị

d)

Mảng không hợp lệ

33.

Một chuỗi ký tự trong C thực chất là:

a)

Một mảng ký tự kết thúc bằng ký tự '\0'

b)

Một biến con trỏ chứa địa chỉ của chuỗi

c)

Một danh sách liên kết của ký tự

d)

Một cấu trúc dữ liệu phức tạp

34.

Hàm nào được dùng để tính chiều dài của chuỗi trong C?

a)

strlen()

b)

strcpy()

c)

strcat()

d)

Lỗi biên dịch

35.

Kết quả của chuỗi "Hello" cộng với chuỗi "World" trong C là gì?

a)

"Hello World"

b)

"HelloWorld"

c)

Kết hợp bằng hàm strcat()

d)

Lỗi biên dịch

36.

Nếu char str[5] = "abcd"; thì kích thước thực sự của mảng là:

a)

4

b)

5

c)

6

d)

Không xác định

37.

Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính trong mảng là gì?

a)

O(1)O(1)

b)

O(logn)O(\log n)

c)

O(n)O(n)

d)

O(n2)O(n^2)

38.

Cách tối ưu để tìm phần tử lớn nhất trong mảng có độ phức tạp là:

a)

O(n)O(n)

b)

O(logn)O(\log n)

c)

O(n2)O(n^2)

d)

O(1)O(1)

39.

Hàm strcpy() trong C thực hiện điều gì?

a)

Sao chép một chuỗi từ nơi này sang nơi khác

b)

Nối hai chuỗi lại với nhau

c)

So sánh hai chuỗi

d)

Tính chiều dài chuỗi

40.

Trong một mảng hai chiều int arr[3][4], phần tử arr[2][3] tương ứng với vị trí nào?

a)

Phần tử hàng 2, cột 3

b)

Phần tử hàng 3, cột 4

c)

Phần tử hàng 2, cột 4

d)

Phần tử hàng 3, cột 3

41.

Nếu một chuỗi có kích thước n ký tự, độ phức tạp thời gian của hàm nối chuỗi (strcat) là gì?

a)

O(1)

b)

O(n)

c)

O(n2)O(n^2)

d)

O(logn)

42.

Danh sách liên kết là gì?

a)

Một cấu trúc dữ liệu tuyến tính lưu trữ các phần tử trong các ô liên tiếp của bộ nhớ

b)

Một cấu trúc dữ liệu trong đó các phần tử được liên kết với nhau bằng con trỏ

c)

Một cấu trúc dữ liệu dùng để lưu trữ các giá trị theo thứ tự giảm dần

d)

Một danh sách có kích thước cố định

43.

Đâu là thành phần cơ bản của một nút trong danh sách liên kết?

a)

Dữ liệu và con trỏ tới nút tiếp theo

b)

Chỉ có dữ liệu

c)

Chỉ có con trỏ

d)

Con trỏ tới nút trước và nút tiếp theo

44.

Danh sách liên kết đơn (Singly Linked List) khác với danh sách liên kết đôi (Doubly Linked List) ở điểm nào?

a)

Danh sách liên kết đôi có con trỏ tới nút trước và nút tiếp theo

b)

Danh sách liên kết đôi không thể được duyệt ngược

c)

Danh sách liên kết đơn không thể thêm phần tử mới

d)

Danh sách liên kết đơn lưu trữ nhiều thông tin hơn mỗi nút

45.

Đâu là ưu điểm của danh sách liên kết so với mảng?

a)

Khả năng thay đổi kích thước động

b)

Tốc độ truy cập ngẫu nhiên nhanh hơn

c)

Dễ dàng lập trình hơn

d)

Không sử dụng con trỏ

46.

Chèn một phần tử vào đầu danh sách liên kết đơn có độ phức tạp thời gian là:

a)

O(1)

b)

O(logn)

c)

O(n)

d)

O(n2)O(n^2)

47.

Để xóa một nút giữa danh sách liên kết đơn, cần biết:

a)

Con trỏ tới nút trước nó

b)

Con trỏ tới nút tiếp theo nó

c)

Giá trị của nút cần xóa

d)

Con trỏ tới nút đầu tiên

48.

Trong danh sách liên kết tròn (Circular Linked List), nút cuối cùng liên kết với:

a)

Nút đầu tiên

b)

Nút giữa danh sách

c)

Một nút bất kỳ

d)

Nút cuối danh sách

49.

Danh sách liên kết có nhược điểm nào sau đây?

a)

Sử dụng thêm bộ nhớ cho con trỏ

b)

Truy cập ngẫu nhiên chậm hơn mảng

c)

Khó lập trình hơn so với mảng

d)

Tất cả các ý trên

50.

Độ phức tạp thời gian để tìm kiếm một phần tử trong danh sách liên kết là:

a)

O(1)

b)

O(logn)

c)

O(n)

d)

O(n2)O(n^2)

51.

Nếu danh sách liên kết có n phần tử, thì có bao nhiêu con trỏ trong danh sách liên kết đơn?

a)

n−1

b)

n

c)

n+1

d)

2n

52.

Trong danh sách liên kết đôi (Doubly Linked List), mỗi nút chứa:

a)

Một con trỏ tới nút trước và một con trỏ tới nút sau

b)

Chỉ một con trỏ tới nút sau

c)

Chỉ một con trỏ tới nút trước

d)

Hai con trỏ tới nút tiếp theo

53.

Để chuyển một danh sách liên kết đôi thành danh sách liên kết đơn, bạn cần làm gì?

a)

Xóa con trỏ tới nút trước ở mỗi nút

b)

Xóa con trỏ tới nút sau ở mỗi nút

c)

Xóa tất cả các nút

d)

Sao chép danh sách

54.

Danh sách liên kết tròn có ưu điểm gì so với danh sách liên kết thông thường?

a)

Không có nút cuối cùng

b)

Dễ dàng quay vòng

c)

Thao tác duyệt danh sách liên tục

d)

Tất cả các ý trên

55.

Câu lệnh nào dùng để tạo một nút mới trong danh sách liên kết?

a)

Node* newNode = new Node();

b)

Node* newNode;

c)

Node newNode = malloc(sizeof(Node));

d)

Node* newNode = createNode();

56.

Danh sách liên kết nào sau đây có thể duyệt theo cả hai hướng?

a)

Danh sách liên kết đơn

b)

Danh sách liên kết đôi

c)

Danh sách liên kết tròn

d)

Danh sách liên kết đơn tròn

57.

Khi thêm một phần tử vào cuối danh sách liên kết đơn, bạn cần:

a)

Truy cập nút cuối cùng

b)

Thêm nút mới sau nút đầu tiên

c)

Gắn nút mới là nút đầu tiên

d)

Xóa tất cả các nút trước đó

58.

Danh sách liên kết đôi có ưu điểm gì so với danh sách liên kết đơn?

a)

Có thể duyệt ngược và thuận

b)

Tiết kiệm bộ nhớ hơn

c)

Tìm kiếm nhanh hơn

d)

Không cần quản lý con trỏ

59.

Độ phức tạp thời gian của việc chèn một nút vào danh sách liên kết đôi là:

a)

O(1)

b)

O(log n)

c)

O(n)

d)

O(n2)O(n^2)

60.

Khi duyệt một danh sách liên kết tròn, điều gì cần kiểm tra để tránh lặp vô hạn?

a)

Con trỏ tới nút đầu tiên

b)

Con trỏ NULL

c)

Số phần tử đã duyệt

d)

Con trỏ tới nút cuối cùng

61.

Trong danh sách liên kết đôi, để xóa nút thứ k, bạn cần:

a)

Cập nhật cả con trỏ của nút trước và nút sau nút k

b)

Chỉ cập nhật con trỏ của nút trước

c)

Chỉ cập nhật con trỏ của nút sau

d)

Không cần cập nhật con trỏ

62.

Danh sách liên kết hiệu quả hơn mảng trong trường hợp nào?

a)

Khi cần chèn hoặc xóa phần tử nhiều lần

b)

Khi cần truy cập ngẫu nhiên

c)

Khi cần lưu trữ số lượng lớn phần tử

d)

Khi cần thao tác song song

63.

Ngăn xếp (Stack) là gì?

a)

Một cấu trúc dữ liệu tuyến tính, tuân theo quy tắc FIFO

b)

Một cấu trúc dữ liệu tuyến tính, tuân theo quy tắc LIFO

c)

Một cấu trúc dữ liệu phi tuyến tính

d)

Một cấu trúc dữ liệu dùng để lưu trữ các hàng đợi

64.

Hàng đợi (Queue) là gì?

a)

Một cấu trúc dữ liệu tuyến tính, tuân theo quy tắc FIFO

b)

Một cấu trúc dữ liệu tuyến tính, tuân theo quy tắc LIFO

c)

Một cấu trúc dữ liệu phi tuyến tính

d)

Một danh sách liên kết vòng

65.

Hoạt động thêm phần tử vào ngăn xếp được gọi là:

a)

Push

b)

Pop

c)

Peek

d)

Dequeue

66.

Hoạt động xóa phần tử khỏi ngăn xếp được gọi là:

a)

Pop

b)

Push

c)

Peek

d)

Dequeue

67.

Ngăn xếp sử dụng nguyên tắc:

a)

FIFO (First In, First Out)

b)

LIFO (Last In, First Out)

c)

FILO (First In, Last Out)

d)

LILO (Last In, Last Out)

68.

Hàng đợi sử dụng nguyên tắc:

a)

FIFO (First In, First Out)

b)

LIFO (Last In, First Out)

c)

FILO (First In, Last Out)

d)

LILO (Last In, Last Out)

69.

Cách đơn giản nhất để thực hiện ngăn xếp là sử dụng:

a)

Mảng hoặc danh sách liên kết

b)

Danh sách liên kết đôi

c)

Danh sách liên kết tròn

d)

Cây nhị phân

70.

Hàng đợi ưu tiên khác hàng đợi thông thường ở điểm nào?

a)

Phần tử có độ ưu tiên cao sẽ được xử lý trước

b)

Chỉ thêm được phần tử vào cuối

c)

Phần tử đầu tiên luôn được xử lý trước

d)

Không cần quan tâm đến độ ưu tiên

71.

Ngăn xếp có thể được sử dụng trong bài toán nào sau đây?

a)

Đảo ngược chuỗi

b)

Tìm kiếm nhị phân

c)

Quản lý hàng đợi trong in ấn

d)

Duyệt đồ thị theo chiều rộng (BFS)

72.

Ngăn xếp sử dụng con trỏ trong C được triển khai tốt nhất bằng:

a)

Danh sách liên kết

b)

Mảng

c)

Danh sách liên kết đôi

d)

Cây nhị phân

73.

Hàng đợi vòng (Circular Queue) được sử dụng để:

a)

Tối ưu bộ nhớ trong việc quản lý hàng đợi

b)

Duyệt đồ thị

c)

Tìm kiếm trong cấu trúc dữ liệu

d)

Lưu trữ dữ liệu dạng cây

74.

Hàng đợi đôi (Deque) cho phép:

a)

Thêm và xóa phần tử ở cả hai đầu

b)

Chỉ thêm phần tử vào cuối

c)

Chỉ xóa phần tử ở đầu

d)

Không cho phép thao tác trên cả hai đầu

75.

Độ phức tạp thời gian của việc thêm một phần tử vào ngăn xếp là:

a)

O(1)

b)

O(log n)

c)

O(n)

d)

O(n2)O(n^2)

76.

Khi hàng đợi được triển khai bằng mảng, vấn đề nào có thể xảy ra?

a)

Tràn hàng đợi (Queue Overflow)

b)

Bộ nhớ không được tái sử dụng

c)

Hàng đợi đầy ngay cả khi có chỗ trống

d)

Tất cả các ý trên

77.

Để tránh lãng phí bộ nhớ trong hàng đợi triển khai bằng mảng, bạn sử dụng:

a)

Hàng đợi vòng (Circular Queue)

b)

Ngăn xếp

c)

Danh sách liên kết

d)

Cây nhị phân

78.

Trong hàng đợi ưu tiên, phần tử nào được xử lý đầu tiên?

a)

Phần tử có độ ưu tiên cao nhất

b)

Phần tử được thêm vào đầu tiên

c)

Phần tử có độ ưu tiên thấp nhất

d)

Phần tử có giá trị lớn nhất

79.

Deque khác hàng đợi thông thường ở điểm nào?

a)

Cho phép thêm và xóa ở cả hai đầu

b)

Sử dụng mảng thay vì danh sách liên kết

c)

Luôn xóa phần tử đầu tiên

d)

Không cho phép xóa phần tử

80.

Để đảo ngược hàng đợi bằng ngăn xếp, bạn cần thực hiện:

a)

Đẩy tất cả phần tử của hàng đợi vào ngăn xếp, sau đó kéo chúng ngược trở lại hàng đợi

b)

Duyệt ngược hàng đợi

c)

Sử dụng một hàng đợi bổ sung

d)

Sử dụng cây nhị phân

81.

Ngăn xếp được sử dụng trong thuật toán nào sau đây?

a)

Duyệt đồ thị theo chiều sâu (DFS)

b)

Duyệt đồ thị theo chiều rộng (BFS)

c)

Sắp xếp theo độ ưu tiên

d)

Sắp xếp bằng cây nhị phân

82.

Cây (Tree) là gì?

a)

Một cấu trúc dữ liệu phi tuyến tính

b)

Một cấu trúc dữ liệu tuyến tính

c)

Một cấu trúc dữ liệu giống danh sách liên kết

d)

Một cấu trúc dữ liệu không có nút gốc

83.

Nút gốc (Root) trong cây là gì?

a)

Nút đầu tiên của cây

b)

Nút cuối cùng của cây

c)

Nút không có nút cha

d)

Nút có ít nhất hai con

84.

Trong cây nhị phân, mỗi nút có tối đa bao nhiêu nút con?

a)

1

b)

2

c)

3

d)

Không giới hạn

85.

Cây nhị phân hoàn chỉnh (Complete Binary Tree) là gì?

a)

Một cây mà tất cả các mức đều đầy đủ ngoại trừ mức cuối cùng

b)

Một cây mà các nút đều có 2 con

c)

Một cây chỉ chứa nút gốc

d)

Một cây mà các nút được sắp xếp theo thứ tự tăng dần

86.

Nút lá (Leaf) là gì?

a)

Một nút không có nút con

b)

Một nút không có nút cha

c)

Một nút nằm ở mức đầu tiên của cây

d)

Một nút có đúng hai con

87.

Độ cao của cây (Height) được định nghĩa là gì?

a)

Chiều dài đường đi dài nhất từ gốc đến nút lá

b)

Tổng số nút trong cây

c)

Số nút trên đường đi từ gốc đến nút cuối cùng

d)

Số cạnh trong cây

88.

Trong cây nhị phân, duyệt theo thứ tự trước (Preorder) thực hiện theo thứ tự nào?

a)

Gốc - Trái - Phải

b)

Trái - Gốc - Phải

c)

Trái - Phải - Gốc

d)

Phải - Trái - Gốc

89.

Duyệt cây nhị phân theo thứ tự giữa (Inorder) thực hiện theo thứ tự nào?

a)

Trái - Gốc - Phải

b)

Gốc - Trái - Phải

c)

Trái - Phải - Gốc

d)

Phải - Gốc - Trái

90.

Duyệt cây nhị phân theo thứ tự sau (Postorder) thực hiện theo thứ tự nào?

a)

Trái - Phải - Gốc

b)

Gốc - Trái - Phải

c)

Trái - Gốc - Phải

d)

Phải - Gốc - Trái

91.

Cây tìm kiếm nhị phân (Binary Search Tree - BST) có đặc điểm gì?

a)

Các nút bên trái nhỏ hơn gốc và các nút bên phải lớn hơn gốc

b)

Mỗi nút có tối đa 3 nút con

c)

Mỗi mức đều đầy đủ nút

d)

Tất cả các nút có giá trị giống nhau

92.

Trong cây nhị phân, nút nào có cùng mức gọi là gì?

a)

Nút anh chị em (Sibling)

b)

Nút cha

c)

Nút lá

d)

Nút con

93.

Cây AVL là gì?

a)

Một cây nhị phân cân bằng độ cao

b)

Một cây mà mỗi nút có đúng 2 con

c)

Một cây mà các nút được sắp xếp theo thứ tự tăng dần

d)

Một cây nhị phân không có nút lá

94.

Độ phức tạp trung bình của tìm kiếm trong cây tìm kiếm nhị phân (BST) là:

a)

O(logn)

b)

O(n)

c)

O(1)

d)

O(n2)O(n^2)

95.

Một cây có n nút thì có bao nhiêu cạnh?

a)

n-1

b)

n

c)

n+1

d)

2n

96.

Duyệt cây theo mức (Level Order Traversal) sử dụng cấu trúc dữ liệu nào?

a)

Hàng đợi (Queue)

b)

Ngăn xếp (Stack)

c)

Mảng (Array)

d)

Danh sách liên kết (Linked List)

97.

Để tìm phần tử nhỏ nhất trong cây tìm kiếm nhị phân, bạn cần:

a)

Đi xuống hết nhánh trái của cây

b)

Đi xuống hết nhánh phải của cây

c)

Tìm nút gốc

d)

Duyệt toàn bộ cây

98.

Cây nhị phân tìm kiếm không cân bằng có độ phức tạp tìm kiếm tệ nhất là:

a)

O(n)

b)

O(logn)

c)

O(1)

d)

O(n2)O(n^2)

99.

Cây AVL đảm bảo cân bằng bằng cách nào?

a)

Xoay cây khi cần thiết

b)

Thêm nút mới vào cuối

c)

Xóa các nút không cân bằng

d)

Không cho phép thêm nút mới

100.

Cây đỏ-đen (Red-Black Tree) có tính chất nào sau đây?

a)

Gốc luôn màu đen

b)

Nút đỏ không có nút con màu đỏ

c)

Mọi đường đi từ một nút đến các nút lá chứa cùng số nút đen

d)

Tất cả các ý trên

101.

Trong cây AVL, độ chênh lệch chiều cao giữa hai nhánh con của bất kỳ nút nào là:

a)

Không lớn hơn 1

b)

Không lớn hơn 2

c)

Không lớn hơn 3

d)

Không giới hạn

102.

Để xóa một nút trong cây tìm kiếm nhị phân, trường hợp phức tạp nhất là khi:

a)

Nút cần xóa có hai con

b)

Nút cần xóa là nút lá

c)

Nút cần xóa không có con

d)

Nút cần xóa là nút gốc

103.

Cây đỏ-đen (Red-Black Tree) là một dạng cây nào?

a)

Cây nhị phân tìm kiếm tự cân bằng

b)

Cây không có nút con

c)

Cây chỉ có hai mức

d)

Cây không cân bằng

104.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Thuật toán sắp xếp là gì?

a)

Một thuật toán để sắp xếp các phần tử theo thứ tự nhất định

b)

Một thuật toán để tìm kiếm phần tử

c)

Một thuật toán để chèn phần tử vào danh sách

d)

Một thuật toán để xóa phần tử khỏi danh sách

105.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Thuật toán sắp xếp nổi bọt (Bubble Sort) hoạt động như thế nào?

a)

So sánh cặp phần tử liền kề và hoán đổi chúng nếu cần

b)

Chia danh sách thành hai nửa rồi sắp xếp từng nửa

c)

Chọn phần tử nhỏ nhất và đưa lên đầu danh sách

d)

Sử dụng cấu trúc cây để sắp xếp

106.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Độ phức tạp thời gian của Bubble Sort trong trường hợp tệ nhất là:

a)

O(n2)O(n^2)

b)

O(nlogn)O(n\log n)

c)

O(n)O(n)

d)

O(1)O(1)

107.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Thuật toán sắp xếp chọn (Selection Sort) chọn phần tử nào để đưa về vị trí đúng?

a)

Phần tử nhỏ nhất hoặc lớn nhất

b)

Phần tử đầu tiên trong danh sách

c)

Phần tử ở giữa danh sách

d)

Phần tử cuối cùng trong danh sách

108.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Độ phức tạp thời gian của Selection Sort là:

a)

O(n2)O(n^2)

b)

O(nlogn)O(n\log n)

c)

O(n)O(n)

d)

O(1)O(1)

109.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Insertion Sort hoạt động tốt nhất khi:

a)

Danh sách đã gần như sắp xếp

b)

Danh sách có phần tử ngẫu nhiên

c)

Danh sách hoàn toàn không sắp xếp

d)

Danh sách rất lớn

110.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Độ phức tạp thời gian của Insertion Sort trong trường hợp tốt nhất là:

a)

O(n)O(n)

b)

O(n2)O(n^2)

c)

O(nlogn)O(n\log n)

d)

O(1)O(1)

111.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Merge Sort sử dụng kỹ thuật nào?

a)

Chia để trị (Divide and Conquer)

b)

Lặp (Iteration)

c)

Quy hoạch động (Dynamic Programming)

d)

Tham lam (Greedy)

112.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Độ phức tạp thời gian của Merge Sort là:

a)

O(nlogn)O(n\log n)

b)

O(n2)O(n^2)

c)

O(n)O(n)

d)

O(1)O(1)

113.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Quick Sort sử dụng kỹ thuật nào?

a)

Chia để trị (Divide and Conquer)

b)

Quy hoạch động (Dynamic Programming)

c)

Tham lam (Greedy)

d)

Lặp (Iteration)

114.

Chương 7: Các thuật toán sắp xếp (Sorting Algorithms) Phần 1: Câu hỏi dễ (11 câu) Pivot trong Quick Sort là gì?

a)

Phần tử dùng để chia danh sách thành hai phần

b)

Phần tử lớn nhất trong danh sách

c)

Phần tử nhỏ nhất trong danh sách

d)

Phần tử ở giữa danh sách

115.

Phần 2: Câu hỏi trung bình (3 câu) Khi nào Merge Sort hiệu quả hơn Quick Sort?

a)

Khi cần độ ổn định (Stable Sort)

b)

Khi danh sách rất nhỏ

c)

Khi không gian bộ nhớ bị giới hạn

d)

Khi danh sách đã gần sắp xếp

116.

Phần 2: Câu hỏi trung bình (3 câu) Tại sao Quick Sort thường nhanh hơn Heap Sort trong thực tế?

a)

Quick Sort có ít thao tác so sánh và di chuyển hơn

b)

Quick Sort sử dụng ít bộ nhớ hơn

c)

Heap Sort cần cấu trúc dữ liệu phức tạp hơn

d)

Heap Sort không đảm bảo sắp xếp đúng

117.

Phần 2: Câu hỏi trung bình (3 câu) Khi áp dụng thuật toán Quick Sort, chọn Pivot như thế nào để đạt hiệu quả tối ưu?

a)

Phần tử trung vị của danh sách

b)

Phần tử đầu tiên

c)

Phần tử cuối cùng

d)

Phần tử bất kỳ