1. Trong một cây quyết định, nút nào đại diện cho một thuộc tính được kiểm tra?
A. Nút gốc
B. Nút lá
C. Nút nhánh
D. Tất cả các nút
2. Khi nào nên sử dụng cây Trie thay vì bảng băm (hash table) để lưu trữ chuỗi?
A. Khi cần tìm kiếm chuỗi chính xác.
B. Khi cần tìm kiếm tiền tố của chuỗi.
C. Khi số lượng chuỗi cần lưu trữ rất lớn.
D. Khi cần xóa chuỗi nhanh chóng.
3. Phương pháp nào sau đây được sử dụng để cân bằng cây AVL?
A. Sắp xếp trộn (Merge Sort)
B. Quay (Rotation)
C. Tìm kiếm nhị phân (Binary Search)
D. Băm (Hashing)
4. Cây Trie (cây tiền tố) được sử dụng chủ yếu cho mục đích gì?
A. Sắp xếp các số
B. Lưu trữ và tìm kiếm chuỗi
C. Biểu diễn đồ thị
D. Tính toán đường đi ngắn nhất
5. Trong cây quyết định, nút lá đại diện cho điều gì?
A. Một thuộc tính được kiểm tra.
B. Một quyết định hoặc kết quả cuối cùng.
C. Một đường dẫn từ gốc đến nút.
D. Một tập hợp các thuộc tính.
6. Trong cây Trie, độ phức tạp thời gian để tìm kiếm một chuỗi có độ dài m là bao nhiêu?
A. O(1)
B. O(log n)
C. O(m)
D. O(n)
7. Khi nào nên sử dụng thuật toán Prim thay vì thuật toán Kruskal để tìm cây khung nhỏ nhất?
A. Khi đồ thị có số lượng cạnh ít hơn số lượng đỉnh.
B. Khi đồ thị có số lượng cạnh nhiều hơn số lượng đỉnh.
C. Khi cần tìm đường đi ngắn nhất.
D. Khi cần sắp xếp dữ liệu.
8. Ứng dụng thực tế của cây khung nhỏ nhất là gì?
A. Tìm đường đi ngắn nhất giữa hai thành phố.
B. Xây dựng mạng lưới đường dây điện tối ưu giữa các thành phố.
C. Sắp xếp danh sách các số.
D. Tìm kiếm một từ trong từ điển.
9. Trong một cây khung nhỏ nhất, nếu tất cả các cạnh đều có trọng số khác nhau, thì cây khung nhỏ nhất có duy nhất không?
A. Không, luôn có nhiều cây khung nhỏ nhất.
B. Có, cây khung nhỏ nhất là duy nhất.
C. Chỉ khi đồ thị là đồ thị đầy đủ.
D. Không thể xác định.
10. Trong cây tìm kiếm nhị phân, thao tác nào sau đây có độ phức tạp thời gian trung bình là O(log n), với n là số lượng nút trong cây?
A. Duyệt cây theo thứ tự trước (preorder traversal)
B. Tìm kiếm một nút
C. Duyệt cây theo thứ tự sau (postorder traversal)
D. Duyệt cây theo thứ tự giữa (inorder traversal)
11. Ứng dụng nào sau đây KHÔNG phù hợp với cây tìm kiếm nhị phân?
A. Lưu trữ và tìm kiếm dữ liệu có thứ tự.
B. Sắp xếp dữ liệu.
C. Tìm kiếm phần tử lớn nhất/nhỏ nhất.
D. Tìm kiếm tuần tự trong một danh sách không có thứ tự.
12. Cây AVL là gì?
A. Một loại cây tìm kiếm nhị phân không cân bằng.
B. Một loại cây mà tất cả các nút đều có giá trị bằng nhau.
C. Một loại cây tìm kiếm nhị phân tự cân bằng.
D. Một loại cây mà tất cả các nút lá đều có cùng độ sâu.
13. Ưu điểm của việc sử dụng cây quyết định trong machine learning là gì?
A. Khả năng xử lý dữ liệu phi cấu trúc.
B. Dễ dàng diễn giải và hiểu được logic đưa ra quyết định.
C. Độ chính xác luôn cao hơn các thuật toán khác.
D. Yêu cầu ít bộ nhớ hơn các thuật toán khác.
14. Trong một cây B, bậc của một nút là gì?
A. Số lượng nút con tối thiểu mà nút đó có thể có.
B. Số lượng nút con tối đa mà nút đó có thể có.
C. Chiều cao của cây.
D. Tổng số nút trong cây.
15. Thuật toán nào sau đây thường được sử dụng để tìm cây khung nhỏ nhất trong một đồ thị?
A. Thuật toán Dijkstra
B. Thuật toán Ford-Fulkerson
C. Thuật toán Kruskal
D. Thuật toán Bubble Sort
16. Trong cây đỏ-đen, tính chất nào sau đây luôn được duy trì?
A. Tất cả các nút đều có màu đỏ.
B. Tất cả các đường đi từ một nút đến các nút lá của nó chứa cùng một số lượng nút đen.
C. Tất cả các nút đều có màu đen.
D. Không có nút đỏ nào có nút con màu đỏ.
17. Trong cây đỏ-đen, điều gì xảy ra khi một nút đỏ mới được chèn vào và có nút cha cũng là màu đỏ?
A. Không có vấn đề gì, cây vẫn hợp lệ.
B. Cây cần được cân bằng lại bằng cách sử dụng các phép quay và đổi màu.
C. Nút mới sẽ tự động chuyển sang màu đen.
D. Nút cha sẽ tự động chuyển sang màu đen.
18. Trong cây B+, các bản ghi dữ liệu được lưu trữ ở đâu?
A. Nút gốc
B. Nút trung gian
C. Nút lá
D. Tất cả các nút
19. Cây nào sau đây thường được sử dụng để triển khai hàng đợi ưu tiên?
A. Cây tìm kiếm nhị phân
B. Cây B
C. Heap
D. Cây quyết định
20. Loại cây nào thường được sử dụng để biểu diễn các biểu thức số học?
A. Cây B
B. Cây quyết định
C. Cây biểu thức
D. Cây AVL
21. Độ phức tạp thời gian để chèn một phần tử vào cây AVL là bao nhiêu?
A. O(n)
B. O(1)
C. O(log n)
D. O(n log n)
22. Khi nào nên sử dụng cây B thay vì cây tìm kiếm nhị phân?
A. Khi dữ liệu được lưu trữ trên bộ nhớ ngoài (ví dụ: ổ cứng).
B. Khi cần tìm kiếm phần tử nhỏ nhất.
C. Khi dữ liệu nhỏ và có thể lưu trữ hoàn toàn trong bộ nhớ trong.
D. Khi cần sắp xếp dữ liệu nhanh chóng.
23. Cây khung nhỏ nhất (Minimum Spanning Tree – MST) của một đồ thị liên thông có trọng số là gì?
A. Một cây bao gồm tất cả các đỉnh của đồ thị, có tổng trọng số các cạnh là lớn nhất.
B. Một đồ thị con liên thông không chứa chu trình.
C. Một cây bao gồm tất cả các đỉnh của đồ thị, có tổng trọng số các cạnh là nhỏ nhất.
D. Một tập hợp các cạnh không tạo thành chu trình.
24. Nếu một đồ thị có n đỉnh và n-1 cạnh, thì đồ thị đó có phải là cây không?
A. Luôn luôn
B. Chỉ khi đồ thị liên thông
C. Không bao giờ
D. Chỉ khi đồ thị không có chu trình
25. Trong cây đỏ đen, màu của nút gốc (root) luôn là gì?
A. Đỏ
B. Đen
C. Xanh lá
D. Không có quy định
26. Trong cây quyết định, kỹ thuật pruning (cắt tỉa) được sử dụng để làm gì?
A. Tăng độ chính xác của cây.
B. Giảm kích thước của cây và tránh overfitting.
C. Tăng tốc độ xây dựng cây.
D. Đơn giản hóa việc diễn giải cây.
27. Độ phức tạp thời gian tốt nhất của thuật toán tìm kiếm nhị phân trên một cây tìm kiếm nhị phân cân bằng là gì?
A. O(n)
B. O(1)
C. O(log n)
D. O(n log n)
28. Thuật toán nào sau đây có thể được sử dụng để kiểm tra xem một đồ thị có phải là cây hay không?
A. Thuật toán Dijkstra
B. Tìm kiếm theo chiều sâu (DFS)
C. Thuật toán sắp xếp nổi bọt (Bubble Sort)
D. Thuật toán tìm kiếm nhị phân (Binary Search)
29. Ưu điểm chính của việc sử dụng cây B+ so với cây B là gì?
A. Cây B+ có thể lưu trữ nhiều khóa hơn trong mỗi nút.
B. Cây B+ có chi phí bảo trì thấp hơn.
C. Cây B+ hỗ trợ truy xuất dữ liệu tuần tự hiệu quả hơn.
D. Cây B+ có độ phức tạp thời gian tìm kiếm tốt hơn.
30. Cây cân bằng là gì?
A. Một cây mà tất cả các nút đều có cùng số lượng nút con.
B. Một cây mà chiều cao của cây con trái và cây con phải của mỗi nút khác nhau không quá một.
C. Một cây mà tất cả các nút lá đều có cùng độ sâu.
D. Một cây mà tất cả các nút đều có giá trị bằng nhau.
31. Độ phức tạp thời gian xấu nhất của thuật toán sắp xếp trộn (merge sort) là gì?
A. O(n^2)
B. O(n)
C. O(n log n)
D. O(log n)
32. Trong thuật toán sắp xếp vun đống (heap sort), độ phức tạp thời gian để xây dựng heap ban đầu từ một mảng chưa sắp xếp là bao nhiêu?
A. O(n^2)
B. O(n log n)
C. O(n)
D. O(log n)
33. Thuật toán Prim được sử dụng để giải quyết vấn đề nào?
A. Tìm đường đi ngắn nhất giữa hai đỉnh.
B. Tìm cây khung nhỏ nhất.
C. Tìm luồng cực đại trong mạng.
D. Sắp xếp một mảng các số.
34. Độ phức tạp thời gian trung bình của thuật toán sắp xếp nổi bọt (bubble sort) là gì?
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
35. Trong bài toán tìm kiếm đường đi trên bản đồ, thuật toán nào sau đây thường được sử dụng để tìm đường đi ngắn nhất giữa hai địa điểm?
A. Sắp xếp nổi bọt (bubble sort).
B. Tìm kiếm nhị phân (binary search).
C. Thuật toán Dijkstra.
D. Sắp xếp trộn (merge sort).
36. Sự khác biệt chính giữa thuật toán BFS và DFS là gì?
A. BFS sử dụng stack, DFS sử dụng queue.
B. BFS tìm đường đi ngắn nhất, DFS tìm tất cả các đường đi.
C. BFS duyệt theo chiều rộng, DFS duyệt theo chiều sâu.
D. BFS nhanh hơn DFS.
37. Khi nào thì nên sử dụng thuật toán sắp xếp chèn (insertion sort) thay vì các thuật toán sắp xếp phức tạp hơn như quicksort hoặc mergesort?
A. Khi cần sắp xếp một lượng lớn dữ liệu.
B. Khi cần sắp xếp dữ liệu trên một hệ thống có bộ nhớ hạn chế.
C. Khi dữ liệu đã gần như được sắp xếp.
D. Khi cần đảm bảo độ phức tạp thời gian là O(n log n).
38. Trong thuật toán sắp xếp nhanh (quick sort), việc chọn phần tử chốt (pivot) ảnh hưởng như thế nào đến hiệu suất của thuật toán?
A. Không ảnh hưởng gì.
B. Nếu phần tử chốt luôn là phần tử nhỏ nhất hoặc lớn nhất, hiệu suất sẽ tốt nhất.
C. Nếu phần tử chốt luôn là phần tử trung vị, hiệu suất sẽ tốt nhất.
D. Nếu phần tử chốt luôn là phần tử ngẫu nhiên, hiệu suất sẽ tốt nhất.
39. Trong thuật toán tìm kiếm theo chiều sâu (DFS), cấu trúc dữ liệu nào thường được sử dụng để triển khai?
A. Queue
B. Stack
C. Heap
D. Linked List
40. Khi nào thì nên sử dụng thuật toán tìm kiếm theo chiều sâu (DFS) thay vì tìm kiếm theo chiều rộng (BFS) trong một đồ thị lớn?
A. Khi cần tìm đường đi ngắn nhất.
B. Khi không gian tìm kiếm rất lớn và có thể có nhiều đường đi.
C. Khi cần duyệt tất cả các đỉnh của đồ thị.
D. Khi đồ thị có cấu trúc cây.
41. Trong thuật toán sắp xếp theo cơ số (radix sort), cơ sở (base) của hệ đếm ảnh hưởng như thế nào đến hiệu suất của thuật toán?
A. Cơ sở càng lớn, hiệu suất càng tốt.
B. Cơ sở càng nhỏ, hiệu suất càng tốt.
C. Cơ sở không ảnh hưởng đến hiệu suất.
D. Hiệu suất tốt nhất khi cơ sở gần bằng số lượng các phần tử cần sắp xếp.
42. Ưu điểm chính của việc sử dụng hàng đợi ưu tiên (priority queue) so với hàng đợi thông thường (queue) là gì?
A. Hàng đợi ưu tiên cho phép truy cập ngẫu nhiên đến các phần tử.
B. Hàng đợi ưu tiên cho phép loại bỏ các phần tử trùng lặp.
C. Hàng đợi ưu tiên cho phép lấy ra phần tử có độ ưu tiên cao nhất một cách hiệu quả.
D. Hàng đợi ưu tiên có thể được triển khai bằng mảng.
43. Kruskal’s algorithm được sử dụng để làm gì?
A. Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh còn lại.
B. Tìm cây khung nhỏ nhất.
C. Tìm luồng cực đại trong mạng.
D. Sắp xếp các phần tử trong mảng.
44. Trong thuật toán Dijkstra, điều gì xảy ra nếu đồ thị chứa cạnh có trọng số âm?
A. Thuật toán vẫn hoạt động chính xác.
B. Thuật toán có thể cho kết quả không chính xác.
C. Thuật toán sẽ chạy vô hạn.
D. Thuật toán sẽ báo lỗi và dừng lại.
45. Cho đồ thị G có 5 đỉnh và 7 cạnh. Số cạnh tối đa có thể có của cây khung nhỏ nhất của G là bao nhiêu?
46. Thuật toán Dijkstra dùng để giải quyết bài toán nào?
A. Tìm cây khung nhỏ nhất (minimum spanning tree).
B. Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh còn lại trong đồ thị có trọng số không âm.
C. Tìm luồng cực đại trong mạng.
D. Tìm chu trình Euler trong đồ thị.
47. Thuật toán Floyd-Warshall dùng để giải quyết bài toán nào?
A. Tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trong đồ thị có trọng số.
B. Tìm cây khung nhỏ nhất.
C. Tìm luồng cực đại trong mạng.
D. Tìm chu trình Euler.
48. Cây khung nhỏ nhất (minimum spanning tree) của một đồ thị liên thông có trọng số là gì?
A. Một cây con chứa tất cả các đỉnh của đồ thị và có tổng trọng số các cạnh là lớn nhất.
B. Một cây con chứa một nửa số đỉnh của đồ thị và có tổng trọng số các cạnh là nhỏ nhất.
C. Một cây con chứa tất cả các đỉnh của đồ thị và có tổng trọng số các cạnh là nhỏ nhất.
D. Một đồ thị con chứa tất cả các đỉnh của đồ thị và có tổng trọng số các cạnh là nhỏ nhất.
49. Ứng dụng nào sau đây không phù hợp với việc sử dụng thuật toán sắp xếp nhanh (quick sort)?
A. Sắp xếp dữ liệu trong bộ nhớ trong (RAM).
B. Sắp xếp dữ liệu lớn hơn nhiều so với bộ nhớ trong (external sorting).
C. Sắp xếp dữ liệu trong cơ sở dữ liệu.
D. Sắp xếp dữ liệu để tìm kiếm nhanh chóng.
50. Cho đồ thị có hướng (directed graph) biểu diễn các phụ thuộc giữa các công việc. Thuật toán nào sau đây được sử dụng để tìm thứ tự thực hiện các công việc sao cho không có công việc nào phụ thuộc vào công việc chưa được thực hiện?
A. Thuật toán Dijkstra.
B. Sắp xếp tô pô (topological sort).
C. Thuật toán Kruskal.
D. Thuật toán Prim.
51. Thuật toán Bellman-Ford được sử dụng để giải quyết bài toán nào?
A. Tìm cây khung nhỏ nhất.
B. Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh còn lại trong đồ thị có thể chứa cạnh âm.
C. Tìm luồng cực đại trong mạng.
D. Tìm chu trình Euler.
52. Trong thuật toán Kruskal, cấu trúc dữ liệu nào được sử dụng để kiểm tra xem hai đỉnh có thuộc cùng một thành phần liên thông hay không?
A. Queue
B. Stack
C. Union-Find (Disjoint Set)
D. Heap
53. Ứng dụng nào sau đây phù hợp nhất với thuật toán sắp xếp theo cơ số (radix sort)?
A. Sắp xếp một mảng số thực.
B. Sắp xếp một mảng các chuỗi có độ dài khác nhau.
C. Sắp xếp một mảng các số nguyên dương có số lượng chữ số giới hạn.
D. Sắp xếp một mảng các đối tượng phức tạp.
54. Trong thuật toán sắp xếp trộn (merge sort), thao tác trộn hai mảng đã sắp xếp có độ phức tạp thời gian là bao nhiêu?
A. O(n^2)
B. O(log n)
C. O(n log n)
D. O(n)
55. Trong thuật toán tìm kiếm theo chiều rộng (BFS), cấu trúc dữ liệu nào được sử dụng?
A. Stack
B. Queue
C. Heap
D. Tree
56. Độ phức tạp thời gian trung bình của thuật toán tìm kiếm nhị phân (binary search) là gì?
A. O(n)
B. O(n^2)
C. O(log n)
D. O(1)
57. Độ phức tạp thời gian tốt nhất của thuật toán sắp xếp chèn (insertion sort) là gì?
A. O(n^2)
B. O(n log n)
C. O(log n)
D. O(n)
58. Ứng dụng nào sau đây không phải là ứng dụng của hàng đợi ưu tiên (priority queue)?
A. Lập lịch công việc trong hệ điều hành.
B. Xây dựng cây Huffman để nén dữ liệu.
C. Sắp xếp các phần tử trong mảng.
D. Tìm đường đi ngắn nhất bằng thuật toán Dijkstra.
59. Trong một đồ thị разреженный (sparse graph), thuật toán nào sau đây thường hiệu quả hơn để tìm cây khung nhỏ nhất?
A. Thuật toán Prim sử dụng ma trận kề.
B. Thuật toán Kruskal.
C. Thuật toán Dijkstra.
D. Thuật toán Bellman-Ford.
60. Để tìm đường đi giữa hai thành phố trên bản đồ sử dụng thuật toán A*, thông tin heuristic nào sau đây là phù hợp nhất?
A. Số lượng thành phố trên bản đồ.
B. Khoảng cách đường chim bay giữa hai thành phố.
C. Tổng số đường đi có thể giữa hai thành phố.
D. Mật độ dân số của các thành phố.
61. Khi nào nên sử dụng bảng băm (hash table) thay vì cây tìm kiếm nhị phân (binary search tree)?
A. Khi cần duyệt các phần tử theo thứ tự.
B. Khi cần tìm kiếm, chèn và xóa phần tử với độ phức tạp thời gian trung bình O(1).
C. Khi cần đảm bảo độ phức tạp thời gian tìm kiếm là O(log n) trong trường hợp xấu nhất.
D. Khi không gian bộ nhớ là một yếu tố quan trọng.
62. Thuật toán Prim được sử dụng để giải quyết vấn đề gì?
A. Tìm đường đi ngắn nhất từ một đỉnh đến tất cả các đỉnh khác.
B. Tìm cây khung nhỏ nhất của một đồ thị.
C. Sắp xếp các đỉnh của đồ thị theo thứ tự tô pô.
D. Tìm tất cả các thành phần liên thông trong một đồ thị.
63. Độ phức tạp thời gian trung bình của thuật toán sắp xếp nhanh (Quick Sort) là bao nhiêu?
A. O(n^2)
B. O(n log n)
C. O(log n)
D. O(n)
64. Khi nào nên sử dụng thuật toán sắp xếp trộn (merge sort) thay vì sắp xếp nhanh (quick sort)?
A. Khi cần sắp xếp tại chỗ (in-place).
B. Khi cần độ phức tạp thời gian tốt nhất là O(n log n) trong mọi trường hợp.
C. Khi dữ liệu gần như đã được sắp xếp.
D. Khi không gian bộ nhớ là một yếu tố quan trọng.
65. Ứng dụng của cây quyết định (decision tree) trong thực tế là gì?
A. Phân loại dữ liệu.
B. Dự đoán giá trị.
C. Phân tích rủi ro.
D. Tất cả các đáp án trên.
66. Ứng dụng thực tế của hàng đợi ưu tiên (priority queue) là gì?
A. Quản lý các tiến trình trong hệ điều hành.
B. Tìm đường đi ngắn nhất trong bản đồ.
C. Lập lịch công việc.
D. Tất cả các đáp án trên.
67. Trong cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search tree), thao tác cân bằng cây (ví dụ: phép quay) được thực hiện để làm gì?
A. Để giảm chiều cao của cây và duy trì độ phức tạp thời gian tìm kiếm là O(log n).
B. Để tăng số lượng nút trong cây.
C. Để sắp xếp các nút theo thứ tự.
D. Để giảm không gian bộ nhớ sử dụng.
68. Trong cấu trúc dữ liệu cây, chiều cao của cây là gì?
A. Số lượng nút trên đường đi dài nhất từ gốc đến một nút lá.
B. Số lượng cạnh trên đường đi dài nhất từ gốc đến một nút lá.
C. Số lượng nút trong cây.
D. Số lượng lá trong cây.
69. Cây khung nhỏ nhất (minimum spanning tree) của một đồ thị liên thông, có trọng số là gì?
A. Một cây bao gồm tất cả các đỉnh của đồ thị và có tổng trọng số cạnh lớn nhất.
B. Một cây bao gồm tất cả các đỉnh của đồ thị và có tổng trọng số cạnh nhỏ nhất.
C. Một đồ thị con của đồ thị ban đầu.
D. Một chu trình bao gồm tất cả các đỉnh của đồ thị.
70. Ưu điểm của việc sử dụng danh sách liên kết kép (doubly linked list) so với danh sách liên kết đơn (singly linked list) là gì?
A. Danh sách liên kết kép chiếm ít bộ nhớ hơn.
B. Danh sách liên kết kép cho phép duyệt theo cả hai hướng.
C. Danh sách liên kết kép có thời gian truy cập nhanh hơn.
D. Danh sách liên kết kép dễ triển khai hơn.
71. Trong đồ thị có hướng (directed graph), sắp xếp tô pô (topological sort) là gì?
A. Một cách sắp xếp các đỉnh sao cho với mọi cạnh (u, v), đỉnh u xuất hiện trước đỉnh v trong danh sách.
B. Một cách sắp xếp các đỉnh theo thứ tự tăng dần của bậc vào.
C. Một cách sắp xếp các đỉnh theo thứ tự giảm dần của bậc ra.
D. Một cách sắp xếp các đỉnh ngẫu nhiên.
72. Trong lập trình động, kỹ thuật ghi nhớ (memoization) được sử dụng để làm gì?
A. Để lưu trữ kết quả của các bài toán con đã được giải để tránh tính toán lại.
B. Để sắp xếp dữ liệu trước khi giải bài toán.
C. Để tối ưu hóa không gian bộ nhớ sử dụng.
D. Để chia nhỏ bài toán thành các bài toán con nhỏ hơn.
73. Trong thuật toán sắp xếp trộn (merge sort), độ phức tạp thời gian tốt nhất là gì?
A. O(n^2)
B. O(n log n)
C. O(log n)
D. O(n)
74. Trong thuật toán tìm kiếm A*, hàm heuristic được sử dụng để làm gì?
A. Để ước tính chi phí từ một nút hiện tại đến nút đích.
B. Để xác định xem một nút đã được thăm hay chưa.
C. Để lưu trữ đường đi ngắn nhất đã tìm thấy.
D. Để sắp xếp các nút theo thứ tự ưu tiên.
75. Ứng dụng thực tế của thuật toán Dijkstra là gì?
A. Tìm đường đi ngắn nhất giữa hai thành phố trên bản đồ.
B. Tìm đường đi ngắn nhất trong mạng máy tính.
C. Lập lịch công việc với thời gian hoàn thành tối thiểu.
D. Tất cả các đáp án trên.
76. Trong cấu trúc dữ liệu đồ thị, ma trận kề (adjacency matrix) được sử dụng để biểu diễn điều gì?
A. Danh sách các đỉnh và cạnh của đồ thị.
B. Sự tồn tại hay không tồn tại của một cạnh giữa hai đỉnh.
C. Trọng số của các cạnh trong đồ thị.
D. Tất cả các đáp án trên.
77. Trong thuật toán Ford-Fulkerson, mục tiêu là gì?
A. Tìm đường đi ngắn nhất giữa hai đỉnh.
B. Tìm luồng cực đại trong một mạng.
C. Tìm cây khung nhỏ nhất.
D. Sắp xếp các đỉnh theo thứ tự tô pô.
78. Trong thuật toán Dijkstra, cấu trúc dữ liệu nào thường được sử dụng để lưu trữ khoảng cách từ nút nguồn đến các nút khác?
A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Hàng đợi ưu tiên (Priority Queue)
D. Danh sách liên kết (Linked List)
79. Ưu điểm của việc sử dụng cây Trie là gì?
A. Tìm kiếm tiền tố (prefix) nhanh chóng.
B. Sắp xếp các chuỗi theo thứ tự từ điển.
C. Nén dữ liệu.
D. Tất cả các đáp án trên.
80. Điểm khác biệt chính giữa thuật toán tham lam và quy hoạch động là gì?
A. Thuật toán tham lam luôn tìm ra lời giải tối ưu, trong khi quy hoạch động không.
B. Thuật toán tham lam đưa ra lựa chọn cục bộ tối ưu tại mỗi bước, trong khi quy hoạch động xem xét tất cả các khả năng.
C. Thuật toán tham lam chỉ có thể được sử dụng cho các bài toán tối ưu hóa, trong khi quy hoạch động có thể được sử dụng cho bất kỳ bài toán nào.
D. Thuật toán tham lam hiệu quả hơn quy hoạch động về mặt thời gian.
81. Ưu điểm chính của việc sử dụng cây B+ so với cây B là gì?
A. Cây B+ có độ cao thấp hơn.
B. Cây B+ có thể lưu trữ nhiều khóa hơn trên mỗi nút.
C. Cây B+ cho phép duyệt tuần tự dữ liệu hiệu quả hơn.
D. Cây B+ dễ dàng triển khai hơn.
82. Khi nào nên sử dụng danh sách liên kết (linked list) thay vì mảng (array)?
A. Khi cần truy cập ngẫu nhiên các phần tử.
B. Khi biết trước kích thước của dữ liệu.
C. Khi cần chèn và xóa phần tử thường xuyên ở giữa danh sách.
D. Khi cần tiết kiệm bộ nhớ.
83. Thuật toán nào sau đây là một thuật toán chia để trị?
A. Sắp xếp chèn (Insertion Sort)
B. Sắp xếp chọn (Selection Sort)
C. Sắp xếp nổi bọt (Bubble Sort)
D. Sắp xếp nhanh (Quick Sort)
84. Trong cấu trúc dữ liệu heap, tính chất heap là gì?
A. Giá trị của một nút phải lớn hơn hoặc bằng giá trị của các nút con của nó (max-heap) hoặc nhỏ hơn hoặc bằng (min-heap).
B. Giá trị của một nút phải bằng tổng giá trị của các nút con của nó.
C. Giá trị của một nút phải nhỏ hơn giá trị của nút cha của nó.
D. Các nút phải được sắp xếp theo thứ tự tăng dần.
85. Trong đồ thị, thuật toán tìm kiếm theo chiều rộng (BFS) thường được sử dụng để làm gì?
A. Tìm đường đi ngắn nhất giữa hai đỉnh không trọng số.
B. Tìm đường đi ngắn nhất giữa hai đỉnh có trọng số.
C. Tìm cây khung nhỏ nhất.
D. Sắp xếp các đỉnh theo thứ tự tô pô.
86. Khi nào nên sử dụng đồ thị thay vì cây?
A. Khi cần biểu diễn mối quan hệ phân cấp.
B. Khi cần biểu diễn mối quan hệ phức tạp giữa các đối tượng, có thể có chu trình.
C. Khi cần tìm kiếm dữ liệu nhanh chóng.
D. Khi cần sắp xếp dữ liệu theo thứ tự.
87. Khi nào nên sử dụng thuật toán tìm kiếm nhị phân (binary search)?
A. Khi dữ liệu chưa được sắp xếp.
B. Khi dữ liệu được lưu trữ trong danh sách liên kết.
C. Khi dữ liệu đã được sắp xếp và có thể truy cập ngẫu nhiên.
D. Khi cần tìm kiếm phần tử nhỏ nhất trong tập dữ liệu.
88. Trong cấu trúc dữ liệu cây, thứ tự duyệt nào sau đây sử dụng ngăn xếp (stack) một cách rõ ràng?
A. Duyệt trước (Preorder traversal) – đệ quy
B. Duyệt giữa (Inorder traversal) – đệ quy
C. Duyệt sau (Postorder traversal) – đệ quy
D. Duyệt theo chiều rộng (Breadth-first traversal)
89. Trong thuật toán Kruskal, tiêu chí nào được sử dụng để chọn cạnh để thêm vào cây khung nhỏ nhất?
A. Chọn cạnh có trọng số lớn nhất mà không tạo thành chu trình.
B. Chọn cạnh có trọng số nhỏ nhất mà không tạo thành chu trình.
C. Chọn cạnh kết nối đỉnh gần nhất với cây hiện tại.
D. Chọn cạnh ngẫu nhiên.
90. Độ phức tạp thời gian của thao tác tìm kiếm trong bảng băm (hash table) trong trường hợp xấu nhất là bao nhiêu?
A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)
91. Khi nào nên sử dụng sắp xếp trộn (merge sort) thay vì sắp xếp vun đống (heap sort)?
A. Khi cần sắp xếp tại chỗ (in-place).
B. Khi cần độ phức tạp không gian thấp.
C. Khi cần tính ổn định.
D. Khi dữ liệu đã gần như được sắp xếp.
92. Khi nào thì việc sử dụng sắp xếp đếm (counting sort) trở nên không thực tế?
A. Khi phạm vi giá trị của các phần tử rất nhỏ.
B. Khi cần sắp xếp các số âm.
C. Khi phạm vi giá trị của các phần tử rất lớn.
D. Khi cần sắp xếp các số thực.
93. Để sắp xếp một mảng các số nguyên trong phạm vi từ 1 đến 100, thuật toán nào sau đây có khả năng cho hiệu suất tốt nhất về thời gian?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp đếm (counting sort)
D. Sắp xếp vun đống (heap sort)
94. Để sắp xếp một mảng các số nguyên không âm mà biết rằng giá trị lớn nhất trong mảng là k, với k không lớn hơn nhiều so với kích thước mảng n, thuật toán nào sau đây sẽ có độ phức tạp thời gian tốt nhất?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp đếm (counting sort)
D. Sắp xếp vun đống (heap sort)
95. Khi nào nên sử dụng thuật toán sắp xếp chèn (insertion sort) thay vì các thuật toán sắp xếp phức tạp hơn?
A. Khi cần sắp xếp một lượng lớn dữ liệu.
B. Khi cần sắp xếp dữ liệu có tính ngẫu nhiên cao.
C. Khi dữ liệu đã gần như được sắp xếp.
D. Khi yêu cầu tính ổn định của thuật toán là bắt buộc.
96. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian O(n log n) trong trường hợp xấu nhất?
A. Sắp xếp nhanh (quick sort)
B. Sắp xếp trộn (merge sort)
C. Sắp xếp chèn (insertion sort)
D. Sắp xếp nổi bọt (bubble sort)
97. Độ phức tạp không gian của thuật toán sắp xếp nhanh (quick sort) trong trường hợp xấu nhất là gì?
A. O(1)
B. O(log n)
C. O(n)
D. O(n^2)
98. Trong thuật toán sắp xếp theo nhóm (bucket sort), điều gì xảy ra nếu tất cả các phần tử rơi vào cùng một nhóm?
A. Thuật toán sẽ chạy nhanh hơn.
B. Thuật toán sẽ không hoạt động.
C. Hiệu suất của thuật toán sẽ giảm xuống O(n^2).
D. Thuật toán sẽ tự động chia nhỏ nhóm đó.
99. Một công ty cần sắp xếp tên khách hàng theo thứ tự bảng chữ cái. Yếu tố nào sau đây quan trọng nhất khi lựa chọn thuật toán sắp xếp?
A. Độ phức tạp thời gian trung bình.
B. Độ phức tạp không gian.
C. Tính ổn định (stability).
D. Độ phức tạp thời gian trong trường hợp xấu nhất.
100. Trong trường hợp nào thì việc sử dụng sắp xếp chèn (insertion sort) trên một danh sách liên kết (linked list) có thể hiệu quả hơn so với các thuật toán sắp xếp khác?
A. Khi cần sắp xếp một danh sách liên kết rất lớn.
B. Khi danh sách liên kết đã gần như được sắp xếp.
C. Khi cần tính ổn định.
D. Khi cần sắp xếp tại chỗ (in-place).
101. Ưu điểm của sắp xếp vun đống (heap sort) so với sắp xếp nhanh (quick sort) là gì?
A. Độ phức tạp thời gian trung bình tốt hơn.
B. Độ phức tạp không gian tốt hơn.
C. Đảm bảo độ phức tạp thời gian O(n log n) trong mọi trường hợp.
D. Dễ cài đặt hơn.
102. Trong thuật toán sắp xếp cơ số (radix sort), cơ sở (base) nào thường được sử dụng cho các số thập phân?
103. Một mảng gồm 1000 phần tử đã được sắp xếp một phần, với mỗi phần tử chỉ cách vị trí đúng của nó tối đa 10 vị trí. Thuật toán nào sau đây sẽ hiệu quả nhất để hoàn thành việc sắp xếp?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp chèn (insertion sort)
D. Sắp xếp vun đống (heap sort)
104. Ưu điểm chính của sắp xếp trộn (merge sort) so với sắp xếp nhanh (quick sort) là gì?
A. Độ phức tạp thời gian trung bình tốt hơn.
B. Độ phức tạp không gian tốt hơn.
C. Tính ổn định (stability).
D. Dễ cài đặt hơn.
105. Sắp xếp đếm (counting sort) hoạt động tốt nhất khi nào?
A. Khi các phần tử cần sắp xếp có giá trị rất lớn.
B. Khi các phần tử cần sắp xếp có giá trị âm.
C. Khi các phần tử cần sắp xếp có phạm vi giá trị nhỏ.
D. Khi các phần tử cần sắp xếp đã gần như được sắp xếp.
106. Ứng dụng nào sau đây phù hợp nhất với thuật toán sắp xếp cơ số (radix sort)?
A. Sắp xếp các số thực có độ chính xác cao.
B. Sắp xếp một mảng nhỏ các số nguyên ngẫu nhiên.
C. Sắp xếp danh sách tên theo thứ tự bảng chữ cái.
D. Sắp xếp dữ liệu đã gần như được sắp xếp.
107. Thuật toán nào sau đây có độ phức tạp thời gian trung bình tốt nhất?
A. Sắp xếp chèn (insertion sort)
B. Sắp xếp nổi bọt (bubble sort)
C. Sắp xếp nhanh (quick sort)
D. Sắp xếp chọn (selection sort)
108. Một ứng dụng cần sắp xếp một luồng dữ liệu liên tục đến (streaming data). Thuật toán nào sau đây phù hợp nhất?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp chèn (insertion sort)
D. Sắp xếp vun đống (heap sort)
109. Trong thuật toán sắp xếp theo nhóm (bucket sort), việc lựa chọn hàm băm (hash function) có ảnh hưởng như thế nào đến hiệu suất?
A. Không ảnh hưởng.
B. Ảnh hưởng đến độ phức tạp không gian.
C. Ảnh hưởng đến độ phức tạp thời gian.
D. Ảnh hưởng đến tính ổn định.
110. Trong một hệ thống có bộ nhớ hạn chế, thuật toán sắp xếp nào sau đây là lựa chọn tốt nhất?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp đếm (counting sort)
D. Sắp xếp vun đống (heap sort)
111. Trong thuật toán sắp xếp theo nhóm (bucket sort), giả sử các phần tử được phân bố không đều vào các nhóm và một nhóm chứa phần lớn các phần tử. Điều này ảnh hưởng đến hiệu suất của thuật toán như thế nào?
A. Thuật toán sẽ chạy nhanh hơn.
B. Độ phức tạp không gian sẽ giảm.
C. Thuật toán sẽ suy biến thành thuật toán sắp xếp được sử dụng để sắp xếp nhóm đó, có thể có độ phức tạp cao hơn.
D. Thuật toán sẽ tự động chia nhỏ nhóm đó.
112. Để sắp xếp một mảng lớn các số thực phân bố đều trong khoảng [0, 1), thuật toán nào sau đây có khả năng hiệu quả nhất?
A. Sắp xếp trộn (merge sort)
B. Sắp xếp nhanh (quick sort)
C. Sắp xếp theo nhóm (bucket sort)
D. Sắp xếp vun đống (heap sort)
113. Khi nào thì sắp xếp nhanh (quick sort) có hiệu suất kém hơn so với sắp xếp trộn (merge sort)?
A. Khi dữ liệu đã gần như được sắp xếp.
B. Khi dữ liệu có tính ngẫu nhiên cao.
C. Khi cần tính ổn định.
D. Khi cần sắp xếp tại chỗ (in-place).
114. Sắp xếp ổn định là gì?
A. Sắp xếp không thay đổi thứ tự các phần tử bằng nhau.
B. Sắp xếp luôn cho kết quả đúng.
C. Sắp xếp nhanh nhất có thể.
D. Sắp xếp sử dụng ít bộ nhớ nhất.
115. Trong thuật toán sắp xếp chọn (selection sort), số lượng phép hoán đổi (swaps) tối đa có thể xảy ra là bao nhiêu?
A. n
B. log n
C. n log n
D. n^2
116. Trong thuật toán sắp xếp trộn (merge sort), thao tác trộn hai mảng con đã sắp xếp có độ phức tạp thời gian là bao nhiêu?
A. O(n log n)
B. O(log n)
C. O(n^2)
D. O(n)
117. Trong thuật toán sắp xếp cơ số (radix sort), điều gì xảy ra nếu các chuỗi có độ dài khác nhau?
A. Thuật toán sẽ không hoạt động.
B. Các chuỗi ngắn hơn được coi là có các ký tự ‘0’ ở đầu.
C. Các chuỗi dài hơn bị cắt ngắn.
D. Các chuỗi ngắn hơn được coi là có các ký tự ‘0’ ở cuối.
118. Trong thuật toán sắp xếp vun đống (heap sort), thao tác ‘heapify’ có độ phức tạp thời gian là bao nhiêu?
A. O(1)
B. O(log n)
C. O(n)
D. O(n log n)
119. Một công ty thương mại điện tử cần sắp xếp các sản phẩm theo giá. Họ muốn đảm bảo rằng các sản phẩm có cùng giá được hiển thị theo thứ tự mà chúng được thêm vào hệ thống. Thuật toán nào sau đây phù hợp nhất?
A. Sắp xếp nhanh (quick sort)
B. Sắp xếp vun đống (heap sort)
C. Sắp xếp trộn (merge sort)
D. Sắp xếp chọn (selection sort)
120. Trong trường hợp nào thì sắp xếp nổi bọt (bubble sort) có thể hữu ích?
A. Sắp xếp một lượng lớn dữ liệu ngẫu nhiên.
B. Sắp xếp dữ liệu đã gần như được sắp xếp.
C. Khi yêu cầu tính ổn định của thuật toán là bắt buộc.
D. Khi cần độ phức tạp thời gian tốt nhất.
121. Ứng dụng nào sau đây sử dụng cấu trúc dữ liệu hàng đợi (Queue)?
A. Quản lý các lệnh gọi hàm trong chương trình (Managing function calls in a program)
B. In đảo ngược một chuỗi (Reversing a string)
C. Xử lý các yêu cầu in trong hệ thống (Handling print requests in a system)
D. Duyệt cây theo chiều sâu (Depth-First Traversal of a tree)
122. Thuật toán nào sau đây được sử dụng để tìm kiếm một mẫu (pattern) trong một chuỗi văn bản?
A. Thuật toán Dijkstra
B. Thuật toán Knuth-Morris-Pratt (KMP)
C. Thuật toán Merge Sort
D. Thuật toán Binary Search
123. Trong một cây AVL, yếu tố cân bằng (balance factor) của một nút có thể nhận các giá trị nào?
A. Chỉ 0 và 1
B. -1, 0, hoặc 1
C. Bất kỳ số nguyên nào
D. Chỉ các số dương
124. Trong cấu trúc dữ liệu đồ thị (Graph), thuật toán nào được sử dụng để tìm cây khung nhỏ nhất (Minimum Spanning Tree)?
A. Thuật toán Dijkstra
B. Thuật toán Ford-Fulkerson
C. Thuật toán Kruskal
D. Thuật toán Quick Sort
125. Trong cấu trúc dữ liệu đồ thị, điều gì xảy ra khi thuật toán duyệt theo chiều sâu (Depth-First Search) gặp một đỉnh đã được thăm?
A. Thuật toán tiếp tục duyệt các đỉnh kề chưa được thăm (The algorithm continues to traverse unvisited adjacent vertices)
B. Thuật toán quay lui về đỉnh trước đó (The algorithm backtracks to the previous vertex)
C. Thuật toán dừng lại (The algorithm stops)
D. Thuật toán bắt đầu lại từ đỉnh gốc (The algorithm restarts from the root vertex)
126. Trong thuật toán Prim, cấu trúc dữ liệu nào thường được sử dụng để lưu trữ các cạnh có thể thêm vào cây khung nhỏ nhất?
A. Hàng đợi (Queue)
B. Ngăn xếp (Stack)
C. Heap (Hàng đợi ưu tiên)
D. Mảng (Array)
127. Cấu trúc dữ liệu nào sau đây hoạt động theo nguyên tắc LIFO (Last In, First Out)?
A. Hàng đợi (Queue)
B. Danh sách liên kết (Linked List)
C. Ngăn xếp (Stack)
D. Cây (Tree)
128. Điều gì xảy ra nếu bạn cố gắng lấy một phần tử từ một ngăn xếp (stack) rỗng?
A. Trả về giá trị null (Returns a null value)
B. Gây ra lỗi tràn ngăn xếp (Causes a stack overflow error)
C. Gây ra lỗi tràn bộ nhớ (Causes a memory overflow error)
D. Gây ra lỗi underflow ngăn xếp (Causes a stack underflow error)
129. Thuật toán nào sau đây thường được sử dụng để tìm kiếm một giá trị cụ thể trong một cây nhị phân tìm kiếm (Binary Search Tree)?
A. Tìm kiếm tuyến tính (Linear Search)
B. Tìm kiếm nhị phân (Binary Search)
C. Tìm kiếm theo chiều rộng (Breadth-First Search)
D. Tìm kiếm theo chiều sâu (Depth-First Search)
130. Thuật toán Dijkstra được sử dụng để giải quyết vấn đề nào sau đây?
A. Tìm cây khung nhỏ nhất (Minimum Spanning Tree)
B. Tìm đường đi ngắn nhất giữa hai đỉnh trong đồ thị có trọng số không âm (Shortest path between two nodes in a graph with non-negative weights)
C. Sắp xếp một mảng các số nguyên (Sorting an array of integers)
D. Tìm kiếm một phần tử trong một mảng đã được sắp xếp (Searching for an element in a sorted array)
131. Trong cấu trúc dữ liệu cây nhị phân tìm kiếm (Binary Search Tree), thao tác nào sau đây có độ phức tạp thời gian là O(h), với h là chiều cao của cây?
A. Duyệt cây theo thứ tự trước (Preorder traversal)
B. Duyệt cây theo thứ tự sau (Postorder traversal)
C. Tìm kiếm một nút (Searching for a node)
D. Duyệt cây theo thứ tự giữa (Inorder traversal)
132. Khi nào nên sử dụng thuật toán Merge Sort thay vì Quick Sort?
A. Khi cần sắp xếp tại chỗ (in-place sorting)
B. Khi cần độ phức tạp thời gian tốt nhất trong mọi trường hợp (When the best time complexity is needed in all cases)
C. Khi dữ liệu gần như đã được sắp xếp (When the data is nearly sorted)
D. Khi không gian bộ nhớ là một hạn chế lớn (When memory space is a major constraint)
133. Trong thuật toán sắp xếp nào sau đây, hiệu suất bị ảnh hưởng nhiều nhất bởi thứ tự ban đầu của dữ liệu?
A. Merge Sort
B. Heap Sort
C. Quick Sort
D. Insertion Sort
134. Ứng dụng nào sau đây KHÔNG phải là ứng dụng phổ biến của bảng băm (Hash Table)?
A. Lưu trữ và truy xuất dữ liệu trong cơ sở dữ liệu (Storing and retrieving data in databases)
B. Cài đặt bộ nhớ cache (Implementing a cache)
C. Tìm kiếm đường đi ngắn nhất trong đồ thị (Finding the shortest path in a graph)
D. Kiểm tra sự tồn tại của một phần tử trong một tập hợp (Checking for the existence of an element in a set)
135. Trong cấu trúc dữ liệu đồ thị, sự khác biệt chính giữa đồ thị có hướng (directed graph) và đồ thị vô hướng (undirected graph) là gì?
A. Đồ thị có hướng có trọng số, trong khi đồ thị vô hướng không có (Directed graphs have weights, while undirected graphs do not)
B. Các cạnh trong đồ thị có hướng có hướng, trong khi các cạnh trong đồ thị vô hướng không có (Edges in directed graphs have directions, while edges in undirected graphs do not)
C. Đồ thị có hướng có thể chứa chu trình, trong khi đồ thị vô hướng không thể (Directed graphs can contain cycles, while undirected graphs cannot)
D. Đồ thị có hướng luôn được biểu diễn bằng ma trận kề, trong khi đồ thị vô hướng luôn được biểu diễn bằng danh sách kề (Directed graphs are always represented by adjacency matrices, while undirected graphs are always represented by adjacency lists)
136. Trong các cấu trúc dữ liệu sau, cấu trúc nào thường được sử dụng để cài đặt hàng đợi ưu tiên (priority queue)?
A. Mảng (Array)
B. Danh sách liên kết (Linked List)
C. Cây nhị phân tìm kiếm (Binary Search Tree)
D. Heap
137. Trong cây AVL, thao tác xoay (rotation) được sử dụng để làm gì?
A. Để sắp xếp các nút trong cây (To sort the nodes in the tree)
B. Để cân bằng lại cây sau khi chèn hoặc xóa một nút (To rebalance the tree after inserting or deleting a node)
C. Để tìm kiếm một nút trong cây (To search for a node in the tree)
D. Để duyệt tất cả các nút trong cây (To traverse all the nodes in the tree)
138. Trong một cây tìm kiếm nhị phân cân bằng (balanced binary search tree), chiều cao của cây được giới hạn bởi yếu tố nào?
A. Số lượng nút (Number of nodes)
B. Giá trị của nút gốc (Value of the root node)
C. Thứ tự chèn các nút (Order of insertion of nodes)
D. Số lượng nút lá (Number of leaf nodes)
139. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên đến các phần tử?
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)
140. Cho một mảng đã được sắp xếp, thuật toán nào hiệu quả nhất để tìm kiếm một phần tử?
A. Tìm kiếm tuyến tính (Linear Search)
B. Tìm kiếm nhị phân (Binary Search)
C. Tìm kiếm theo chiều rộng (Breadth-First Search)
D. Tìm kiếm theo chiều sâu (Depth-First Search)
141. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một dấu ngoặc đơn (parenthesis) trong một biểu thức toán học đã được đóng đúng cách hay chưa?
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)
142. Khi nào nên sử dụng danh sách liên kết thay vì mảng?
A. Khi cần truy cập ngẫu nhiên đến các phần tử (When random access to elements is needed)
B. Khi biết trước số lượng phần tử (When the number of elements is known in advance)
C. Khi cần chèn hoặc xóa phần tử thường xuyên ở giữa danh sách (When frequent insertions or deletions are needed in the middle of the list)
D. Khi cần tiết kiệm bộ nhớ (When memory saving is a priority)
143. Độ phức tạp thời gian tốt nhất của thuật toán sắp xếp Heap Sort là gì?
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
144. Độ phức tạp thời gian của thuật toán chèn (insertion) vào danh sách liên kết đơn (singly linked list) ở đầu danh sách là gì?
A. O(n)
B. O(1)
C. O(log n)
D. O(n log n)
145. Độ phức tạp thời gian của thao tác xóa (deletion) một phần tử khỏi bảng băm (hash table) là gì, giả sử không có xung đột?
A. O(n)
B. O(1)
C. O(log n)
D. O(n log n)
146. Trong cấu trúc dữ liệu cây, thuật ngữ ‘chiều cao’ (height) của một nút đề cập đến điều gì?
A. Số lượng nút trên đường đi dài nhất từ nút đó đến một nút lá (The number of nodes on the longest path from that node to a leaf node)
B. Số lượng nút trên đường đi ngắn nhất từ nút đó đến nút gốc (The number of nodes on the shortest path from that node to the root node)
C. Tổng số nút trong cây con của nút đó (The total number of nodes in the subtree of that node)
D. Số lượng nút con trực tiếp của nút đó (The number of direct child nodes of that node)
147. Trong thuật toán tìm kiếm theo chiều rộng (Breadth-First Search), cấu trúc dữ liệu nào được sử dụng để lưu trữ các đỉnh sẽ được duyệt?
A. Ngăn xếp (Stack)
B. Hàng đợi (Queue)
C. Cây (Tree)
D. Đồ thị (Graph)
148. Độ phức tạp thời gian của thao tác tìm kiếm trong bảng băm (Hash Table) trong trường hợp tốt nhất là gì?
A. O(n)
B. O(1)
C. O(log n)
D. O(n log n)
149. Độ phức tạp thời gian trung bình của thuật toán Quick Sort là gì?
A. O(n)
B. O(n log n)
C. O(n^2)
D. O(log n)
150. Trong một cây nhị phân đầy đủ (full binary tree), nếu số lượng nút là N, thì số lượng nút lá là bao nhiêu?
A. (N + 1) / 2
B. N / 2
C. N – 1
D. log2(N)