Skip to content
Võ Việt Hoàng SEO - Founder SEO GenZ

Viet Hoang Vo's SEO Portfolio

Case study SEO, Ấn phẩm SEO, Blog SEO

    • Trang chủ
    • Điều khoản sử dụng
    • Quiz Online
    • Blog SEO
    • Tools
    • Võ Việt Hoàng SEO
    • SEO GenZ
    • Sitemap

    Trang chủ » Trắc nghiệm Cấu trúc dữ liệu và giải thuật chương 3

    Danh sách các chương
    • Chương 1
    • Chương 2
    • Chương 3
    • Chương 4
    • Chương 5
    • Chương 6
    • Chương 7
    • Chương 8
    • Chương 9

    Trắc nghiệm Cấu trúc dữ liệu và giải thuật

    Trắc nghiệm Cấu trúc dữ liệu và giải thuật chương 3

    Ngày cập nhật: 26/02/2026

    Lưu ý và Miễn trừ trách nhiệm:Các câu hỏi và đáp án trong bộ trắc nghiệm này được xây dựng với mục đích hỗ trợ ôn luyện kiến thức và tham khảo. Nội dung này không phản ánh tài liệu chính thức, đề thi chuẩn hay bài kiểm tra chứng chỉ từ bất kỳ tổ chức giáo dục hoặc cơ quan cấp chứng chỉ chuyên ngành nào. Admin không chịu trách nhiệm về độ chính xác tuyệt đối của thông tin cũng như mọi quyết định bạn đưa ra dựa trên kết quả của các bài trắc nghiệm.

    Chào bạn, hãy cùng bắt đầu với bộ Trắc nghiệm Cấu trúc dữ liệu và giải thuật chương 3. Bạn sẽ được thử sức với nhiều câu hỏi chọn lọc, phù hợp cho việc ôn luyện. Hãy lựa chọn phần trắc nghiệm phù hợp bên dưới để bắt đầu hành trình học tập của bạn. Chúc bạn có trải nghiệm làm bài thú vị và đạt kết quả như mong đợi!

    ★★★★★
    ★★★★★
    4.5/5 (140 đánh giá)

    1. Thao tác nào sau đây không phải là thao tác cơ bản trên cây?

    A. Duyệt cây (Traversal).
    B. Tìm kiếm (Search).
    C. Sắp xếp (Sort).
    D. Chèn (Insert).

    2. Trong cấu trúc dữ liệu ngăn xếp (stack), thao tác nào sau đây tuân theo nguyên tắc LIFO (Last-In, First-Out)?

    A. Enqueue
    B. Dequeue
    C. Push
    D. Peek

    3. Độ phức tạp thời gian tốt nhất của thuật toán Bubble Sort là bao nhiêu?

    A. O(n^2)
    B. O(n log n)
    C. O(n)
    D. O(log n)

    4. Cho một mảng các số nguyên chưa được sắp xếp. Bạn muốn tìm phần tử lớn thứ k trong mảng. Cấu trúc dữ liệu và thuật toán nào sau đây phù hợp nhất?

    A. Sử dụng Bubble Sort và trả về phần tử thứ k.
    B. Sử dụng Quick Sort và trả về phần tử thứ k.
    C. Sử dụng Heap (cụ thể là Max Heap) và lấy ra k phần tử lớn nhất.
    D. Sử dụng tìm kiếm tuyến tính (Linear Search) và so sánh với tất cả các phần tử khác.

    5. Cây nào sau đây đảm bảo thời gian tìm kiếm, chèn và xóa là O(log n) trong trường hợp xấu nhất?

    A. Cây tìm kiếm nhị phân không cân bằng.
    B. Cây AVL.
    C. Cây B.
    D. Cây Heap.

    6. Thuật toán sắp xếp nào sau đây hoạt động bằng cách chia mảng thành các mảng con, sắp xếp chúng, sau đó hợp nhất lại?

    A. Insertion Sort.
    B. Selection Sort.
    C. Quick Sort.
    D. Merge Sort.

    7. Cho đoạn code sau (giả sử đã khai báo và khởi tạo): `int arr[5] = {5, 2, 8, 1, 9};`
    Sau khi thực hiện đoạn code sau: `for (int i = 0; i < 4; i++) { for (int j = 0; j arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }`
    Mảng `arr` sẽ có giá trị như thế nào?

    A. {5, 2, 8, 1, 9}
    B. {9, 8, 5, 2, 1}
    C. {1, 2, 5, 8, 9}
    D. {1, 9, 2, 8, 5}

    8. Ưu điểm chính của việc sử dụng danh sách liên kết so với mảng là gì?

    A. Truy cập ngẫu nhiên đến các phần tử nhanh hơn.
    B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước dữ liệu đã biết trước.
    C. Dễ dàng chèn và xóa các phần tử ở giữa danh sách.
    D. Yêu cầu ít bộ nhớ hơn cho mỗi phần tử.

    9. Ưu điểm chính của việc sử dụng cây so với danh sách liên kết là gì?

    A. Sử dụng bộ nhớ hiệu quả hơn.
    B. Tìm kiếm nhanh hơn trong hầu hết các trường hợp.
    C. Dễ dàng cài đặt hơn.
    D. Cho phép truy cập ngẫu nhiên đến các phần tử.

    10. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong cây tìm kiếm nhị phân cân bằng là bao nhiêu?

    A. O(n)
    B. O(1)
    C. O(log n)
    D. O(n^2)

    11. Trong cấu trúc dữ liệu bảng băm (hash table), điều gì xảy ra khi hai khóa khác nhau băm (hash) đến cùng một vị trí?

    A. Xảy ra lỗi.
    B. Ghi đè giá trị hiện có.
    C. Xử lý bằng phương pháp giải quyết xung đột.
    D. Bảng băm tự động tăng kích thước.

    12. Trong thuật toán sắp xếp nào sau đây, độ phức tạp thời gian trung bình là O(n log n)?

    A. Bubble Sort.
    B. Insertion Sort.
    C. Merge Sort.
    D. Selection Sort.

    13. Phương pháp nào sau đây không phải là một phương pháp giải quyết xung đột trong bảng băm?

    A. Separate Chaining.
    B. Linear Probing.
    C. Quadratic Probing.
    D. Binary Search.

    14. Độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính (linear search) 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)

    15. Ứng dụng nào sau đây không phải là ứng dụng phổ biến của đồ thị?

    A. Mạng xã hội.
    B. Hệ thống định tuyến đường đi.
    C. Quản lý bộ nhớ.
    D. Biểu diễn các mối quan hệ giữa các đối tượng.

    16. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong bảng băm (hash table) với phương pháp separate chaining là bao nhiêu, giả sử số lượng phần tử trong mỗi bucket là nhỏ?

    A. O(n)
    B. O(log n)
    C. O(1)
    D. O(n log n)

    17. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?

    A. Quản lý lịch sử duyệt web (back/forward).
    B. Kiểm tra tính hợp lệ của dấu ngoặc trong biểu thức.
    C. In các tài liệu theo thứ tự gửi.
    D. Đảo ngược một chuỗi.

    18. Bạn cần triển khai một hệ thống undo/redo trong một trình soạn thảo văn bản. Cấu trúc dữ liệu nào sau đây phù hợp nhất?

    A. Hàng đợi (Queue).
    B. Mảng (Array).
    C. Ngăn xếp (Stack).
    D. Cây (Tree).

    19. Đ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) trống?

    A. Trả về giá trị null.
    B. Trả về phần tử cuối cùng đã được thêm vào.
    C. Gây ra lỗi underflow.
    D. Trả về một giá trị ngẫu nhiên.

    20. 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 để theo dõi các nút đã thăm?

    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).

    21. Bạn cần kiểm tra xem một biểu thức toán học có cân bằng dấu ngoặc hay không (ví dụ: (a + b) * (c – d)). Cấu trúc dữ liệu nào sau đây phù hợp nhất?

    A. Hàng đợi (Queue).
    B. Mảng (Array).
    C. Ngăn xếp (Stack).
    D. Cây (Tree).

    22. Trong một hệ thống quản lý bộ nhớ, bạn cần theo dõi các khối bộ nhớ đã được cấp phát và giải phóng. Cấu trúc dữ liệu nào sau đây phù hợp nhất?

    A. Mảng (Array).
    B. Ngăn xếp (Stack).
    C. Danh sách liên kết (Linked List).
    D. Hàng đợi (Queue).

    23. Trong thuật toán tìm kiếm nhị phân, điều kiện tiên quyết nào phải được đáp ứng?

    A. Dữ liệu phải được sắp xếp.
    B. Dữ liệu phải là số nguyên.
    C. Dữ liệu phải là duy nhất.
    D. Dữ liệu phải có kích thước nhỏ.

    24. Trong cấu trúc dữ liệu danh sách liên kết đơn, thao tác nào sau đây có độ phức tạp thời gian O(1)?

    A. Tìm kiếm một phần tử cụ thể trong danh sách.
    B. Xóa phần tử cuối cùng khỏi danh sách.
    C. Chèn một phần tử vào đầu danh sách.
    D. Đảo ngược thứ tự các phần tử trong danh sách.

    25. Trong thuật toán Quick Sort, việc chọn phần tử chốt (pivot) ảnh hưởng đến hiệu suất như thế nào?

    A. Không ảnh hưởng.
    B. Luôn cải thiện hiệu suất.
    C. Có thể ảnh hưởng đáng kể đến hiệu suất.
    D. Chỉ ảnh hưởng đến bộ nhớ sử dụng.

    26. Cho một cây tìm kiếm nhị phân (BST) với các nút có giá trị: 5, 3, 7, 2, 4, 6, 8. Nếu duyệt cây theo thứ tự inorder, thứ tự các nút sẽ là gì?

    A. 5, 3, 7, 2, 4, 6, 8
    B. 2, 3, 4, 5, 6, 7, 8
    C. 2, 4, 3, 6, 8, 7, 5
    D. 8, 6, 7, 4, 2, 3, 5

    27. Thuật toán nào sau đây tìm cây khung nhỏ nhất (minimum spanning tree) cho một đồ thị liên thông có trọng số?

    A. Dijkstra.
    B. Kruskal.
    C. BFS (Breadth-First Search).
    D. DFS (Depth-First Search).

    28. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán tìm kiếm theo chiều rộng (BFS)?

    A. Ngăn xếp (Stack).
    B. Hàng đợi (Queue).
    C. Cây (Tree).
    D. Đồ thị (Graph).

    29. Thuật toán nào sau đây tìm đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác trong một đồ thị có trọng số không âm?

    A. BFS (Breadth-First Search).
    B. DFS (Depth-First Search).
    C. Dijkstra.
    D. Prim.

    30. Cho một đồ thị có các cạnh sau: A-B, A-C, B-D, C-E. Nếu bắt đầu từ đỉnh A và thực hiện tìm kiếm theo chiều rộng (BFS), thứ tự các đỉnh được thăm sẽ là gì?

    A. A, B, C, D, E
    B. A, B, D, C, E
    C. A, C, B, E, D
    D. A, B, C, E, D

    31. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai hàng đợi ưu tiên?

    A. Mảng
    B. Danh sách liên kết
    C. Heap
    D. Cây tìm kiếm nhị phân

    32. Trong cấu trúc dữ liệu hàng đợi (Queue), thao tác nào thêm một phần tử vào cuối hàng đợi?

    A. Dequeue
    B. Enqueue
    C. Peek
    D. Pop

    33. Thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (Minimum Spanning Tree) trong một đồ thị?

    A. Tìm kiếm theo chiều sâu (DFS)
    B. Tìm kiếm theo chiều rộng (BFS)
    C. Thuật toán Dijkstra
    D. Thuật toán Prim

    34. Độ phức tạp thời gian trung bình để tìm kiếm một phần tử trong cây tìm kiếm nhị phân (BST) là bao nhiêu?

    A. O(n)
    B. O(log n)
    C. O(1)
    D. O(n^2)

    35. Ứng dụng thực tế nào sau đây sử dụng cấu trúc dữ liệu cây?

    A. Quản lý bộ nhớ
    B. Định tuyến mạng
    C. Hệ thống tập tin
    D. Tất cả các đáp án trên

    36. 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 trong một biểu thức toán học có cân bằng hay không?

    A. Hàng đợi (Queue)
    B. Mảng (Array)
    C. Ngăn xếp (Stack)
    D. Danh sách liên kết (Linked List)

    37. Trong thuật toán sắp xếp nhanh (Quick Sort), kỹ thuật nào được sử dụng để phân vùng mảng?

    A. Chia để trị (Divide and Conquer)
    B. Tham lam (Greedy)
    C. Quy hoạch động (Dynamic Programming)
    D. Backtracking

    38. Trong đồ thị, thuật toán nào sau đây được sử dụng để tìm tất cả các thành phần liên thông (connected components)?

    A. Tìm kiếm theo chiều sâu (DFS) hoặc Tìm kiếm theo chiều rộng (BFS)
    B. Thuật toán Dijkstra
    C. Thuật toán Prim
    D. Thuật toán Kruskal

    39. Cấu trúc dữ liệu nào sau đây tuân theo nguyên tắc LIFO (Last In, First Out)?

    A. Hàng đợi (Queue)
    B. Ngăn xếp (Stack)
    C. Danh sách liên kết (Linked List)
    D. Cây (Tree)

    40. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán tìm kiếm theo chiều rộng (BFS)?

    A. Ngăn xếp (Stack)
    B. Hàng đợi (Queue)
    C. Cây (Tree)
    D. Danh sách liên kết (Linked List)

    41. Trong cây tìm kiếm nhị phân, thứ tự duyệt nào sau đây sẽ cho ra các nút theo thứ tự tăng dần?

    A. Preorder
    B. Postorder
    C. Inorder
    D. Level order

    42. Cấu trúc dữ liệu nào sau đây cho phép truy cập ngẫu nhiên các phần tử?

    A. Danh sách liên kết (Linked List)
    B. Hàng đợi (Queue)
    C. Mảng (Array)
    D. Ngăn xếp (Stack)

    43. Cho một mảng đã được sắp xếp, thuật toán tìm kiếm nào hiệu quả nhấ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)

    44. Trong cây, nút nào không có nút con được gọi là gì?

    A. Nút gốc (Root)
    B. Nút lá (Leaf)
    C. Nút cha (Parent)
    D. Nút con (Child)

    45. Cấu trúc dữ liệu nào sau đây được sử dụng để triển khai thuật toán LFU (Least Frequently Used) trong bộ nhớ cache?

    A. Hàng đợi (Queue)
    B. Ngăn xếp (Stack)
    C. Heap hoặc Bảng băm (Hash table)
    D. Danh sách liên kết (Linked List)

    46. 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 trung bình tốt nhất
    C. Khi cần độ ổn định (stability)
    D. Khi dữ liệu gần như đã được sắp xếp

    47. Trong cây tìm kiếm nhị phân cân bằng (ví dụ: AVL tree, Red-Black 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
    B. Độ sâu của nút lá sâu nhất
    C. Logarit của số lượng nút
    D. Số lượng nút con của nút gốc

    48. Độ phức tạp thời gian xấu nhất của thuật toán sắp xếp chèn (Insertion Sort) là bao nhiêu?

    A. O(n)
    B. O(log n)
    C. O(n^2)
    D. O(n log n)

    49. Cho một mảng các số nguyên chưa được sắp xếp, thuật toán nào sau đây có thể tìm phần tử lớn thứ k trong thời gian trung bình O(n)?

    A. Sắp xếp nhanh (Quick Sort)
    B. Sắp xếp trộn (Merge Sort)
    C. Thuật toán Quickselect
    D. Sắp xếp chèn (Insertion Sort)

    50. Trong cấu trúc dữ liệu đồ thị, thuật toán nào sau đây được sử dụng để tìm đường đi ngắn nhất từ một đỉnh nguồn đến tất cả các đỉnh khác?

    A. Tìm kiếm theo chiều sâu (DFS)
    B. Tìm kiếm theo chiều rộng (BFS)
    C. Thuật toán Dijkstra
    D. Thuật toán Prim

    51. Độ phức tạp thời gian để tìm kiếm một phần tử trong bảng băm (hash table) trong trường hợp tốt nhất là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n log n)

    52. Phương pháp nào sau đây là hiệu quả nhất để đảo ngược một chuỗi?

    A. Sử dụng một ngăn xếp (Stack)
    B. Sử dụng một hàng đợi (Queue)
    C. Sử dụng một cây (Tree)
    D. Sử dụng một đồ thị (Graph)

    53. Độ phức tạp thời gian của thao tác tìm kiếm trong danh sách liên kết đơn (singly linked list) là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n log n)

    54. Cho một cây tìm kiếm nhị phân không cân bằng, thao tác nào sau đây có thể cải thiện hiệu suất tìm kiếm?

    A. Duyệt inorder
    B. Xoay cây (Tree rotation)
    C. Chèn thêm nút
    D. Xóa nút

    55. Độ phức tạp thời gian của thao tác chèn vào một heap là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n log n)

    56. Thuật toán nào sau đây có thể được sử dụng để phát hiện chu trình trong một đồ thị có hướng?

    A. Tìm kiếm theo chiều rộng (BFS)
    B. Tìm kiếm theo chiều sâu (DFS)
    C. Thuật toán Dijkstra
    D. Thuật toán Prim

    57. Trong biểu diễn đồ thị bằng danh sách kề (adjacency list), độ phức tạp không gian là bao nhiêu?

    A. O(V + E)
    B. O(V^2)
    C. O(E^2)
    D. O(V * E)

    58. Ưu điểm chính của việc sử dụng danh sách liên kết so với mảng là gì?

    A. Truy cập ngẫu nhiên nhanh hơn
    B. Sử dụng bộ nhớ hiệu quả hơn
    C. Dễ dàng chèn và xóa phần tử
    D. Tìm kiếm phần tử nhanh hơn

    59. Kiểu dữ liệu trừu tượng (ADT) nào sau đây mô tả một tập hợp các đối tượng mà việc thêm và xóa các đối tượng chỉ có thể được thực hiện ở một đầu?

    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)

    60. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian tốt nhất là O(n log n)?

    A. Bubble Sort
    B. Insertion Sort
    C. Merge Sort
    D. Selection Sort

    61. Trong cấu trúc dữ liệu cây tìm kiếm nhị phân, thao tác nào sau đây có thể được sử dụng để tìm phần tử nhỏ nhất trong cây?

    A. Duyệt cây theo thứ tự trước (preorder)
    B. Đi xuống cây con trái cho đến khi không còn cây con trái nào
    C. Đi xuống cây con phải cho đến khi không còn cây con phải nào
    D. Duyệt cây theo thứ tự sau (postorder)

    62. Trong thuật toán tìm kiếm theo chiều sâu (depth-first search), cấu trúc dữ liệu nào sau đây được sử dụng để theo dõi các đỉnh đã được thăm?

    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)

    63. Trong các thuật toán sắp xếp, thuật toán nào thường được sử dụng để sắp xếp các mảng lớn vì hiệu suất trung bình tốt và khả năng sắp xếp tại chỗ (in-place)?

    A. Bubble Sort
    B. Merge Sort
    C. Quick Sort
    D. Insertion Sort

    64. Độ 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)

    65. 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ố, đồ thị vô hướng không có trọng số
    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ó hướng
    C. Đồ thị có hướng có chu trình, đồ thị vô hướng không có chu trình
    D. Đồ thị có hướng có nhiều đỉnh hơn đồ thị vô hướng

    66. Trong cấu trúc dữ liệu cây, độ cao của một nút được định nghĩa như thế nào?

    A. Số lượng nút trên đường đi từ nút đó đến nút gốc
    B. Số lượng cạnh trên đường đi dài nhất từ nút đó đến một nút lá
    C. Số lượng nút con của nút đó
    D. Số lượng nút trên cây

    67. Trong cấu trúc dữ liệu đồ thị (graph), cách biểu diễn nào sau đây sử dụng nhiều bộ nhớ nhất khi đồ thị có ít cạnh (sparse graph)?

    A. Ma trận kề (Adjacency Matrix)
    B. Danh sách kề (Adjacency List)
    C. Danh sách cạnh (Edge List)
    D. Cây khung (Spanning Tree)

    68. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?

    A. Truy cập phần tử nhanh hơn
    B. Sử dụng bộ nhớ hiệu quả hơn khi biết trước kích thước
    C. Dễ dàng chèn và xóa phần tử ở giữa danh sách
    D. Ít tốn bộ nhớ hơn

    69. 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 sau đây đượ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)

    70. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu ngăn xếp (stack)?

    A. Mô phỏng hàng đợi chờ tại quầy thanh toán
    B. Quản lý lịch sử duyệt web (back/forward)
    C. Tìm đường đi ngắn nhất trên bản đồ
    D. In các trang theo thứ tự gửi đến máy in

    71. Cấu trúc dữ liệu nào sau đây thường được sử dụng để biểu diễn mối quan hệ cha-con trong một hệ thống phân cấp, ví dụ như cấu trúc thư mục trong hệ điều hành?

    A. Mảng (Array)
    B. Danh sách liên kết (Linked List)
    C. Cây (Tree)
    D. Hàng đợi (Queue)

    72. 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)

    73. Trong cây tìm kiếm nhị phân (binary search tree), thao tác nào sau đây cho phép duyệt các nút theo thứ tự tăng dần?

    A. Duyệt tiền thứ tự (Preorder Traversal)
    B. Duyệt trung thứ tự (Inorder Traversal)
    C. Duyệt hậu thứ tự (Postorder Traversal)
    D. Duyệt theo chiều rộng (Breadth-First Traversal)

    74. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian tốt nhất là O(n)?

    A. Quick Sort
    B. Heap Sort
    C. Counting Sort
    D. Insertion Sort

    75. Trong cấu trúc dữ liệu đồ thị, thuật toán Dijkstra được sử dụng để làm gì?

    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
    C. Tìm chu trình Euler
    D. Sắp xếp các đỉnh của đồ thị

    76. Trong cấu trúc dữ liệu hàng đợi (queue), thao tác nào sau đây thực hiện việc loại bỏ một phần tử khỏi hàng đợi?

    A. Push
    B. Enqueue
    C. Dequeue
    D. Peek

    77. Trong cấu trúc dữ liệu đồ thị, thuật toán nào sau đây được sử dụng để tìm cây khung nhỏ nhất (minimum spanning tree)?

    A. Dijkstra
    B. Bellman-Ford
    C. Prim
    D. Depth-First Search

    78. Độ phức tạp thời gian để chèn một phần tử vào đầu danh sách liên kết đơn (singly linked list) là bao nhiêu?

    A. O(n)
    B. O(log n)
    C. O(1)
    D. O(n^2)

    79. Trong cấu trúc dữ liệu đồ thị, một chu trình Euler là gì?

    A. Một đường đi đi qua tất cả các đỉnh của đồ thị
    B. Một đường đi đi qua tất cả các cạnh của đồ thị mỗi cạnh một lần
    C. Một đường đi ngắn nhất giữa hai đỉnh
    D. Một đường đi dài nhất trong đồ thị

    80. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?

    A. Quản lý các cuộc gọi đến trong tổng đài
    B. Kiểm tra dấu ngoặc trong biểu thức
    C. Duyệt cây theo chiều sâu
    D. Tìm đường đi ngắn nhất trên đồ thị

    81. Trong cấu trúc dữ liệu cây, nút nào không có nút con được gọi là gì?

    A. Nút gốc (Root)
    B. Nút lá (Leaf)
    C. Nút cha (Parent)
    D. Nút con (Child)

    82. Trong các thuật toán sắp xếp, thuật toán nào có tính ổn định (stable), nghĩa là các phần tử bằng nhau giữ nguyên thứ tự ban đầu sau khi sắp xếp?

    A. Quick Sort
    B. Heap Sort
    C. Selection Sort
    D. Insertion Sort

    83. 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 phần tử nhanh chóng (độ phức tạp O(1) trung bình)
    C. Khi cần đảm bảo các phần tử được sắp xếp
    D. Khi cần tiết kiệm bộ nhớ

    84. Khi nào nên sử dụng thuật toán Merge Sort thay vì Quick Sort?

    A. Khi dữ liệu đã gần được sắp xếp
    B. Khi cần đảm bảo độ phức tạp thời gian O(n log n) trong mọi trường hợp
    C. Khi cần tiết kiệm bộ nhớ
    D. Khi kích thước dữ liệu nhỏ

    85. Khi nào nên sử dụng thuật toán tìm kiếm tuyến tính (linear search) thay vì tìm kiếm nhị phân (binary search)?

    A. Khi dữ liệu đã được sắp xếp
    B. Khi cần tìm kiếm phần tử lớn nhất
    C. Khi dữ liệu chưa được sắp xếp hoặc không thể sắp xếp
    D. Khi cần tìm kiếm phần tử nhỏ nhất

    86. Cấu trúc dữ liệu nào sau đây thường được sử dụng để triển khai thuật toán undo/redo trong các ứng dụng chỉnh sửa văn bản?

    A. Hàng đợi (Queue)
    B. Ngăn xếp (Stack)
    C. Cây (Tree)
    D. Đồ thị (Graph)

    87. Độ phức tạp thời gian tốt nhất để tìm kiếm một phần tử trong một cây tìm kiếm nhị phân cân bằng (balanced binary search tree) là bao nhiêu?

    A. O(n)
    B. O(log n)
    C. O(1)
    D. O(n^2)

    88. Trong thuật toán tìm kiếm nhị phân (binary search), điều kiện tiên quyết nào sau đây phải được đáp ứng?

    A. Dữ liệu phải được sắp xếp
    B. Dữ liệu phải là số nguyên
    C. Dữ liệu phải là duy nhất
    D. Dữ liệu phải có kích thước nhỏ

    89. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n log n)?

    A. Bubble Sort
    B. Insertion Sort
    C. Merge Sort
    D. Selection Sort

    90. Ưu điểm của việc sử dụng danh sách liên kết đôi (doubly linked list) so với danh sách liên kết đơn (singly linked list) là gì?

    A. Tiết kiệm bộ nhớ hơn
    B. Truy cập phần tử nhanh hơn
    C. Dễ dàng duyệt theo cả hai chiều
    D. Chèn và xóa phần tử ở đầu danh sách nhanh hơn

    91. Trong các cấu trúc dữ liệu sau, cấu trúc nào cho phép truy cập ngẫu nhiên đến các phần tử?

    A. Hàng đợi (queue)
    B. Danh sách liên kết (linked list)
    C. Ngăn xếp (stack)
    D. Mảng (array)

    92. Để đảo ngược một danh sách liên kết đơn (singly linked list) tại chỗ (in-place), bạn cần sử dụng bao nhiêu bộ nhớ phụ trợ (không tính bộ nhớ của chính danh sách)?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n^2)

    93. Độ phức tạp thời gian để tìm kiếm một phần tử trong một danh sách liên kết đơn (singly linked list) chưa được sắp xếp là bao nhiêu trong trường hợp xấu nhất?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n^2)

    94. Ưu điểm của danh sách liên kết đôi (doubly linked list) so với danh sách liên kết đơn (singly linked list) là gì?

    A. Tiết kiệm bộ nhớ hơn
    B. Truy cập phần tử nhanh hơn
    C. Dễ dàng duyệt ngược danh sách
    D. Chèn và xóa phần tử nhanh hơn

    95. Cho một danh sách liên kết đã đượ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 sâu (DFS)
    D. Tìm kiếm theo chiều rộng (BFS)

    96. Trong cài đặt hàng đợi bằng danh sách liên kết, độ phức tạp thời gian để thêm một phần tử vào cuối hàng đợi (enqueue) là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n^2)

    97. Khi nào nên sử dụng danh sách liên kết vòng (circular linked list)?

    A. Khi cần truy cập ngẫu nhiên đến các phần tử
    B. Khi cần thêm hoặc xóa các phần tử ở đầu danh sách
    C. Khi cần biểu diễn một chuỗi các hành động lặp đi lặp lại
    D. Khi cần sắp xếp các phần tử

    98. Thuật toán nào sau đây có thể được sử dụng để kiểm tra xem một chuỗi có phải là palindrome (đọc xuôi ngược như nhau) hay không?

    A. Sử dụng hàng đợi (queue)
    B. Sử dụng ngăn xếp (stack)
    C. Sử dụng cả hàng đợi và ngăn xếp
    D. Không thể kiểm tra được bằng các cấu trúc dữ liệu này

    99. 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 (queue)?

    A. Mảng (array)
    B. Cây (tree)
    C. Đồ thị (graph)
    D. Ngăn xếp (stack)

    100. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?

    A. Truy cập phần tử ngẫu nhiên nhanh hơn
    B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước thay đổi
    C. Dễ dàng tìm kiếm hơn
    D. Yêu cầu ít bộ nhớ hơn

    101. Trong một ứng dụng quản lý công việc, bạn cần ưu tiên thực hiện các công việc quan trọng trước. Cấu trúc dữ liệu nào phù hợp nhất để cài đặt hệ thống này?

    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)

    102. Thao tác nào sau đây có thể gây ra lỗi ‘stack overflow’?

    A. Dequeue một hàng đợi rỗng
    B. Push quá nhiều phần tử vào ngăn xếp
    C. Tìm kiếm một phần tử không tồn tại trong danh sách liên kết
    D. Chèn một phần tử vào một hàng đợi đầy

    103. Ứng dụng nào sau đây phù hợp nhất với cấu trúc dữ liệu hàng đợi (queue)?

    A. Quản lý lịch sử duyệt web
    B. Đảo ngược một chuỗi
    C. In ấn tài liệu theo thứ tự gửi
    D. Kiểm tra tính hợp lệ của dấu ngoặc trong biểu thức

    104. Thao tác nào sau đây không thể thực hiện trực tiếp (trong O(1)) trên một ngăn xếp (stack) được cài đặt bằng mảng?

    A. Kiểm tra xem ngăn xếp có rỗng không
    B. Thêm một phần tử vào đỉnh ngăn xếp (push)
    C. Xóa một phần tử khỏi đỉnh ngăn xếp (pop)
    D. Truy cập phần tử ở đáy ngăn xếp

    105. Ứng dụng nào sau đây không phù hợp với cấu trúc dữ liệu ngăn xếp (stack)?

    A. Kiểm tra tính hợp lệ của dấu ngoặc
    B. Đảo ngược một chuỗi
    C. Quản lý các lệnh gọi hàm
    D. Tìm đường đi ngắn nhất trong một đồ thị

    106. Để chèn một nút vào giữa một danh sách liên kết đơn (singly linked list), bạn cần thay đổi bao nhiêu con trỏ?

    A. 0
    B. 1
    C. 2
    D. 3

    107. Trong cài đặt ngăn xếp (stack) bằng mảng, khi nào cần thay đổi kích thước mảng?

    A. Khi ngăn xếp đầy
    B. Khi ngăn xếp rỗng
    C. Khi số lượng phần tử vượt quá một ngưỡng nhất định
    D. Khi số lượng phần tử giảm xuống dưới một ngưỡng nhất định

    108. Khi nào nên sử dụng danh sách liên kết thay vì mảng?

    A. Khi biết trước số lượng phần tử
    B. Khi cần truy cập ngẫu nhiên đến các phần tử
    C. Khi cần chèn hoặc xóa các phần tử thường xuyên
    D. Khi cần tiết kiệm bộ nhớ

    109. Giả sử bạn có một ngăn xếp (stack) chứa các số nguyên. Bạn muốn tìm giá trị lớn nhất trong ngăn xếp. Bạn có thể thực hiện điều này bằng cách nào?

    A. Duyệt qua ngăn xếp từ đáy lên đỉnh
    B. Sử dụng một hàng đợi phụ trợ
    C. Sử dụng một ngăn xếp phụ trợ
    D. Không thể thực hiện được

    110. Đâu là nhược điểm của việc sử dụng mảng (array) để cài đặt hàng đợi (queue)?

    A. Khó truy cập các phần tử
    B. Kích thước cố định
    C. Chèn và xóa phần tử ở đầu tốn nhiều thời gian
    D. Cả kích thước cố định và chèn/xóa ở đầu tốn nhiều thời gian

    111. Cho một danh sách liên kết đơn (singly linked list) đã được sắp xếp tăng dần. Bạn muốn chèn một phần tử mới vào danh sách sao cho danh sách vẫn được sắp xếp. Độ phức tạp thời gian tốt nhất để thực hiện thao tác này là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n^2)

    112. Trong cài đặt hàng đợi bằng mảng vòng (circular array), làm thế nào để phân biệt giữa hàng đợi đầy và hàng đợi rỗng?

    A. Kiểm tra xem ‘front’ và ‘rear’ có bằng nhau không
    B. Kiểm tra xem ‘front’ có lớn hơn ‘rear’ không
    C. Kiểm tra xem ‘rear’ có lớn hơn ‘front’ không
    D. Không thể phân biệt được

    113. Trong một danh sách liên kết đôi (doubly linked list), mỗi nút chứa bao nhiêu con trỏ?

    A. Một con trỏ
    B. Hai con trỏ
    C. Ba con trỏ
    D. Không có con trỏ nào

    114. Để xóa một nút khỏi danh sách liên kết đôi (doubly linked list), bạn cần cập nhật bao nhiêu con trỏ?

    A. 0
    B. 1
    C. 2
    D. 4

    115. Trong các thao tác sau trên hàng đợi (queue), thao tác nào có độ phức tạp thời gian O(1)?

    A. Tìm kiếm phần tử
    B. Chèn phần tử vào cuối hàng đợi (enqueue)
    C. Xóa phần tử khỏi đầu hàng đợi và trả về (dequeue)
    D. Cả enqueue và dequeue

    116. 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)

    117. Cho một danh sách liên kết đơn (singly linked list), làm thế nào để kiểm tra xem danh sách có chứa vòng lặp hay không?

    A. Sử dụng hai con trỏ, một con trỏ chạy nhanh hơn con trỏ kia
    B. Sử dụng một ngăn xếp để lưu trữ các nút đã duyệt
    C. Sử dụng một hàng đợi để lưu trữ các nút đã duyệt
    D. Sắp xếp danh sách và kiểm tra xem có nút nào trùng lặp không

    118. Thao tác nào sau đây không được hỗ trợ trực tiếp bởi cấu trúc dữ liệu ngăn xếp (stack)?

    A. Push
    B. Pop
    C. Peek (xem phần tử trên cùng)
    D. Tìm kiếm một phần tử cụ thể

    119. Độ phức tạp thời gian để chèn một phần tử vào đầu một danh sách liên kết đơn (singly linked list) là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n^2)

    120. Thuật toán nào sau đây sử dụng cấu trúc dữ liệu ngăn xếp (stack) một cách hiệu quả?

    A. Tìm kiếm theo chiều rộng (BFS)
    B. Tìm kiếm theo chiều sâu (DFS)
    C. Thuật toán Dijkstra
    D. Thuật toán Prim

    121. Kiểu dữ liệu trừu tượng (ADT) nào sau đây tuân theo nguyên tắc FIFO (First In, First Out)?

    A. Stack
    B. Queue
    C. Tree
    D. Graph

    122. Ưu điểm chính của việc sử dụng danh sách liên kết (linked list) so với mảng (array) là gì?

    A. Truy cập ngẫu nhiên nhanh hơn
    B. Sử dụng bộ nhớ hiệu quả hơn khi kích thước không đổi
    C. Dễ dàng chèn và xóa phần tử ở giữa danh sách
    D. Tìm kiếm phần tử nhanh hơn

    123. Độ phức tạp không gian của thuật toán sắp xếp trộn (merge sort) là bao nhiêu?

    A. O(1)
    B. O(log n)
    C. O(n)
    D. O(n log n)

    124. Sự khác biệt chính giữa cấu trúc dữ liệu ‘mảng’ và ‘danh sách liên kết’ là gì?

    A. Mảng có kích thước cố định, trong khi danh sách liên kết có thể thay đổi kích thước
    B. Mảng có thể lưu trữ các kiểu dữ liệu khác nhau, trong khi danh sách liên kết chỉ có thể lưu trữ một kiểu dữ liệu
    C. Mảng sử dụng bộ nhớ liên tục, trong khi danh sách liên kết sử dụng bộ nhớ phân tán
    D. Mảng cho phép truy cập ngẫu nhiên, trong khi danh sách liên kết chỉ cho phép truy cập tuần tự

    125. Khi nào nên sử dụng thuật toán sắp xếp đếm (counting sort)?

    A. Khi cần sắp xếp dữ liệu có phạm vi giá trị lớn
    B. Khi cần sắp xếp dữ liệu có phạm vi giá trị nhỏ và là số nguyên
    C. Khi cần sắp xếp dữ liệu có kiểu dữ liệu phức tạp
    D. Khi cần sắp xếp dữ liệu trực tuyến (online)

    126. Khi nào nên sử dụng thuật toán sắp xếp chèn (insertion sort) thay vì thuật toán sắp xếp nhanh (quick sort)?

    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 đã gần như được sắp xếp
    C. Khi cần sắp xếp dữ liệu có tính ngẫu nhiên cao
    D. Khi cần đảm bảo độ phức tạp thời gian luôn là O(n log n)

    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. Queue (Hàng đợi)
    B. Linked List (Danh sách liên kết)
    C. Stack (Ngăn xếp)
    D. Binary Tree (Cây nhị phân)

    128. Trong cây nhị phân cân bằng (ví dụ: AVL tree), thao tác nào sau đây có thể được yêu cầu để duy trì tính cân bằng sau khi chèn hoặc xóa một nút?

    A. Hoán đổi giá trị của các nút
    B. Xoay cây (tree rotation)
    C. Thay đổi giá trị khóa của các nút
    D. Di chuyển toàn bộ cây sang một vị trí khác trong bộ nhớ

    129. Thuật toán tìm kiếm nào sau đây có thể được sử dụng trên dữ liệu chưa được sắp xếp?

    A. Tìm kiếm nhị phân (Binary Search)
    B. Tìm kiếm tuyến tính (Linear Search)
    C. Tìm kiếm nội suy (Interpolation Search)
    D. Tìm kiếm nhảy (Jump Search)

    130. Để duyệt một cây theo thứ tự rộng (breadth-first), cấu trúc dữ liệu nào sau đây thường được sử dụng?

    A. Stack (Ngăn xếp)
    B. Queue (Hàng đợi)
    C. Linked List (Danh sách liên kết)
    D. Heap (Đống)

    131. Trong ngữ cảnh của cấu trúc dữ liệu, ‘độ phức tạp không gian’ đề cập đến điều gì?

    A. Thời gian cần thiết để thực hiện một thuật toán
    B. Lượng bộ nhớ cần thiết để lưu trữ dữ liệu và thực hiện thuật toán
    C. Số lượng dòng mã trong chương trình
    D. Độ khó của việc hiểu và bảo trì mã

    132. Trong một cây tìm kiếm nhị phân (binary search tree), thao tác nào sau đây luôn duy trì tính chất của cây?

    A. Chèn một nút có giá trị khóa bất kỳ
    B. Xóa một nút lá (leaf node)
    C. Xóa nút gốc (root node)
    D. Duyệt cây theo thứ tự trước (preorder traversal)

    133. Trong cây nhị phân tìm kiếm, thao tác nào sau đây có độ phức tạp 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. Chèn một nút mới vào cây
    C. Tìm kiếm một nút có giá trị khóa cụ thể
    D. Xóa một nút khỏi cây

    134. Trong một bảng băm (hash table), điều gì xảy ra khi hai khóa khác nhau được băm (hashed) vào cùng một vị trí?

    A. Xảy ra lỗi và chương trình dừng lại
    B. Khóa mới sẽ ghi đè lên khóa cũ
    C. Xảy ra hiện tượng xung đột (collision)
    D. Bảng băm tự động tăng kích thước

    135. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai một bộ nhớ cache?

    A. Stack (Ngăn xếp)
    B. Queue (Hàng đợi)
    C. Hash Table (Bảng băm)
    D. Linked List (Danh sách liên kết)

    136. Khi nào nên sử dụng danh sách liên kết vòng (circular linked list)?

    A. Khi cần truy cập ngẫu nhiên các phần tử
    B. Khi cần chèn và xóa phần tử ở đầu danh sách
    C. Khi cần duyệt danh sách một cách lặp đi lặp lại
    D. Khi cần sắp xếp các phần tử trong danh sách

    137. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình tốt nhất khi dữ liệu đã gần như được sắp xếp?

    A. Quick Sort
    B. Merge Sort
    C. Insertion Sort
    D. Heap Sort

    138. Trong thuật toán Kruskal tìm cây khung nhỏ nhất (minimum spanning tree), tiêu chí nào được sử dụng để chọn cạnh tiếp theo để thêm vào cây?

    A. Cạnh có trọng số lớn nhất
    B. Cạnh có trọng số nhỏ nhất và không tạo thành chu trình
    C. Cạnh kết nối hai đỉnh gần nhau nhất
    D. Cạnh được duyệt đến đầu tiên

    139. Trong thuật toán sắp xếp trộn (merge sort), quá trình ‘merge’ có vai trò gì?

    A. Chia mảng thành các mảng con nhỏ hơn
    B. So sánh các phần tử liền kề và hoán đổi chúng nếu cần
    C. Kết hợp hai mảng đã sắp xếp thành một mảng đã sắp xếp
    D. Tìm phần tử nhỏ nhất trong mảng và đưa nó về đầu mảng

    140. Cấu trúc dữ liệu nào sau đây cho phép truy cập phần tử đầu tiên và phần tử cuối cùng trong thời gian O(1)?

    A. Mảng (Array)
    B. Danh sách liên kết đơn (Singly Linked List)
    C. Danh sách liên kết đôi (Doubly Linked List)
    D. Hàng đợi (Queue)

    141. Thuật toán sắp xếp nào sau đây có hiệu suất tốt nhất trong trường hợp dữ liệu đã được sắp xếp theo thứ tự ngược lại?

    A. Bubble Sort
    B. Quick Sort
    C. Merge Sort
    D. Insertion Sort

    142. Cấu trúc dữ liệu nào sau đây phù hợp nhất để kiểm tra xem một chuỗi có phải là palindrome hay không?

    A. Queue (Hàng đợi)
    B. Stack (Ngăn xếp)
    C. Linked List (Danh sách liên kết)
    D. Heap (Đống)

    143. Để kiểm tra xem một đồ thị có chu trình hay không, thuật toán nào sau đây thường được sử dụng?

    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 sâu (Depth-First Search – DFS)
    D. Tìm kiếm theo chiều rộng (Breadth-First Search – BFS)

    144. Cấu trúc dữ liệu nào sau đây phù hợp nhất để triển khai một hàng đợi ưu tiên (priority queue)?

    A. Stack (Ngăn xếp)
    B. Queue (Hàng đợi)
    C. Heap (Đống)
    D. Linked List (Danh sách liên kết)

    145. Thuật toán sắp xếp nào sau đây có độ phức tạp thời gian trung bình là O(n^2)?

    A. Merge Sort
    B. Quick Sort
    C. Insertion Sort
    D. Heap Sort

    146. Trong thuật toán Prim tìm cây khung nhỏ nhất (minimum spanning tree), đỉnh nào được chọn để thêm vào cây ở mỗi bước?

    A. Đỉnh có bậc cao nhất
    B. Đỉnh có bậc thấp nhất
    C. Đỉnh gần nhất với cây hiện tại
    D. Đỉnh được duyệt đến đầu tiên

    147. Độ phức tạp thời gian tốt nhất của thuật toán tìm kiếm nhị phân (binary search) là bao nhiêu?

    A. O(n)
    B. O(log n)
    C. O(1)
    D. O(n log n)

    148. Cấu trúc dữ liệu nào sau đây phù hợp nhất để biểu diễn mối quan hệ ‘cha-con’ trong một tổ chức?

    A. Stack (Ngăn xếp)
    B. Queue (Hàng đợi)
    C. Tree (Cây)
    D. Linked List (Danh sách liên kết)

    149. Trong thuật toán Dijkstra tìm đường đi ngắn nhất trên đồ thị có trọng số không âm, cấu trúc dữ liệu nào thường được sử dụng để lưu trữ khoảng cách từ đỉnh nguồn đến các đỉnh khác?

    A. Stack (Ngăn xếp)
    B. Queue (Hàng đợi)
    C. Heap (Đống)
    D. Linked List (Danh sách liên kết)

    150. Trong một đồ thị có hướng (directed graph), thuật toán nào sau đây được sử dụng để tìm thứ tự tô pô (topological order)?

    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 sâu (Depth-First Search – DFS)
    D. Tìm kiếm theo chiều rộng (Breadth-First Search – BFS)

    Số câu đã làm: 0/0
    Thời gian còn lại: 00:00:00
    • Đã làm
    • Chưa làm
    • Cần kiểm tra lại

    Về Blog

    Viet Hoang Vo's SEO Portfolio - Nơi Võ Việt Hoàng SEO lưu giữ Case Study, ấn phẩm SEO, đây cũng là Blog SEO Thứ 2.

    Social

    • Facebook
    • Instagram
    • X
    • LinkedIn
    • YouTube
    • Spotify
    • Threads
    • Bluesky
    • TikTok
    • Pinterest

    Hệ sinh thái Võ Việt Hoàng SEO

    Võ Việt Hoàng Blog Võ Việt Hoàng Portfolio SEO Genz Community Võ Việt Hoàng Official site

    Về Tác Giả

    Võ Việt Hoàng SEO (tên thật là Võ Việt Hoàng) là một SEOer tại Việt Nam, được biết đến với vai trò sáng lập cộng đồng SEO GenZ – Cộng Đồng Học Tập SEO. Sinh năm 1998 tại Đông Hòa, Phú Yên. Hiện đang làm việc tại Hồ Chí Minh.

    Vị trí: SEO Leader | Digital Marketer | Founder SEO GenZ | Tác giả các ấn phẩm Social Profile Entity SEO

    Liên hệ: hoangvv.blogger@gmail.com

    SEO Publications

    Slideshare | Google Scholar | Issuu | Fliphtml5 | Pubhtml5 | Anyflip | Academia.edu | Visual Paradigm | Files.fm | Scribd | Behance | Slideserve | Coda | Calameo | Archive.org

    Professional Social Networks

    Upwork | Ybox | Fiverr | Vlance | Freelancer | Brandsvietnam | Advertisingvietnam | Xing | Webflow | Site123 | Weebly

    Miễn Trừ Trách Nhiệm

    Tất cả các nội dung trên Website chỉ mang tính tham khảo, không đại diện cho quan điểm chính thức của bất kỳ tổ chức nào.

    Nội dung các câu hỏi và đáp án thuộc danh mục "Quiz online" được xây dựng với mục tiêu tham khảo và hỗ trợ học tập. Đây KHÔNG PHẢI là tài liệu chính thức hay đề thi từ bất kỳ tổ chức giáo dục hoặc đơn vị cấp chứng chỉ chuyên ngành nào.

    Admin không chịu trách nhiệm về tính chính xác tuyệt đối của nội dung hoặc bất kỳ quyết định nào của bạn được đưa ra dựa trên kết quả của các bài trắc nghiệm cũng như nội dung bài viết trên Website.

    Copyright © 2024 Được xây dựng bởi Võ Việt Hoàng (Võ Việt Hoàng SEO)

    Bạn ơi!!! Để xem kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

    Đang tải nhiệm vụ...

    Bước 1: Mở tab mới và truy cập Google.com và tìm kiếm chính xác từ khóa sau:

    Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

    Hướng dẫn tìm kiếm

    Nếu không tìm thấy, vui lòng tìm ở trang 2, 3, 4... của kết quả tìm kiếm nhé.

    Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu chính là SỐ LƯỢT XEM như hình ảnh hướng dẫn:

    Hướng dẫn lấy mật khẩu

    Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.

    Bạn ơi!!! Để xem được kết quả, bạn vui lòng làm nhiệm vụ nhỏ xíu này nha

    HƯỚNG DẪN TÌM MẬT KHẨU

    Đang tải nhiệm vụ...

    Bước 1: Mở tab mới và truy cập Google.com. Sau đó tìm kiếm chính xác từ khóa sau:

    Bước 2: Tìm và click vào kết quả có trang web giống như hình ảnh dưới đây:

    Hướng dẫn tìm kiếm

    Bước 3: Kéo xuống cuối trang đó để tìm mật khẩu như hình ảnh hướng dẫn:

    Hướng dẫn lấy mật khẩu

    Nếu tìm không thấy mã bạn có thể Đổi nhiệm vụ để lấy mã khác nhé.