Câu hỏi:

01/10/2024 120

Cho tập hợp A gồm các số nguyên dương A = (6, 14, 10, 34, 40, 30, 46, 20, 24, 22} được lưu trữ bằng hai cách sau:

Media VietJack

Cách 1: Lưu vào mảng một chiều.

Media VietJack

Cho giá trị x = 20. Em hãy trình bày:

a) Cách tìm kiếm x trong mảng A.

b) Cách tìm kiếm x trong cây nhị phân.

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Để tìm kiếm giá trị x = 20 trong tập hợp A, ta có thể làm như sau:

a)  Bắt đầu từ phần tử đầu tiên của mảng A, so sánh từng phần tử với x. Khi bạn đến phần tử thứ tám, bạn sẽ thấy giá trị 20. Đó là tìm kiếm tuần tự.

b) Tìm kiếm x trong cây nhị phân: Giả sử tập hợp A được tổ chức thành một cây tìm kiếm nhị phân, bạn sẽ bắt đầu từ nút gốc và so sánh x với giá trị của nút. Nếu x nhỏ hơn, di chuyển sang nút con bên trái; nếu lớn hơn, di chuyển sang nút con bên phải. Tiếp tục quá trình này cho đến khi tìm thấy x hoặc đến nút lá mà không tìm thấy x. Con đường cụ thể phụ thuộc vào cách tập hợp A được sắp xếp trong cây.

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Lời giải

Vẽ cây tìm kiếm nhị phân bằng cách đưa vào cây rỗng lần lượt các phần tử của mảng A = [3, 6, 13, 7, 5, 2, 8, 9] như sau:

1. Phần tử đầu tiên là 3, nó sẽ là gốc.

2. Chèn các phần tử còn lại lần lượt vào cây theo quy tắc của cây tìm kiếm nhị phân.

Bắt đầu từ mảng A = [3, 6, 13, 7, 5, 2, 8, 9]:

1. Phần tử đầu tiên là 3, nó sẽ là gốc.

markdown

Sao chép mã 3

1. Chèn 6 vào cây: 6 > 3, nên 6 là con phải của 3.

2. Chèn 13 vào cây: 13 > 3, chuyển sang cây con phải của 3. 13 > 6, nên 13 là con phải của 6.

3. Chèn 7 vào cây: 7 > 3, chuyển sang cây con phải của 3. 7 > 6, chuyển sang cây con phải của 6. 7 < 13, nên 7 là con trái của 13.

4. Chèn 5 vào cây: 5 > 3, chuyển sang cây con phải của 3. 5 < 6, nên 5 là con trái của 6.

5. Chèn 2 vào cây: 2 < 3, nên 2 là con trái của 3.

6. Chèn 8 vào cây:

8 > 3, chuyển sang cây con phải của 3.

8 > 6, chuyển sang cây con phải của 6.

8 < 13, chuyển sang cây con trái của 13.

8 > 7, nên 8 là con phải của 7.

    Chèn 9 vào cây:

9 > 3, chuyển sang cây con phải của 3.

9 > 6, chuyển sang cây con phải của 6.

9 < 13, chuyển sang cây con trái của 13.

9 > 7, chuyển sang cây con phải của 7.

9 > 8, nên 9 là con phải của 8.

Media VietJack

Lời giải

a) Để tìm giá trị x = 22 trong cây tìm kiếm nhị phân, bạn có thể thực hiện theo các bước sau:

- Duyệt trước: Bắt đầu từ nút gốc (25), duyệt qua nút gốc, sau đó là cây con bên trái (bắt đầu từ 15), và cuối cùng là cây con bên phải (bắt đầu từ 50). Tiếp tục cho đến khi tìm thấy x = 22 hoặc đã duyệt qua tất cả các nút.

- Duyệt giữa: Duyệt cây con bên trái (bắt đầu từ 15), sau đó là nút gốc (25), và cuối cùng là cây con bên phải (bắt đầu từ 50). Phương pháp này sẽ tìm thấy x = 22 sau khi kiểm tra tất cả các giá trị nhỏ hơn.

- Duyệt sau: Duyệt cây con bên trái (bắt đầu từ 15), sau đó là cây con bên phải (bắt đầu từ 50), và cuối cùng là nút gốc (25). Phương pháp này sẽ tìm thấy x = 22 sau khi khám phá tất cả các nút con.

- Tìm kiếm nhị phân: Bắt đầu từ nút gốc (25). Vì x = 22 nhỏ hơn 25, chuyển sang nút con bên trái (15). Vì x = 22 lớn hơn 15, chuyển sang nút con bên phải (20). Vì không có nút con bên phải cho nút có giá trị ‘20’, kết luận rằng x = 22 không tồn tại trong cây tìm kiếm nhị phân này.

b) Trong trường hợp tổng quát của cây tìm kiếm nhị phân, thuật toán tìm kiếm nhị phân thường có số lần so sánh ít nhất vì nó hệ thống hóa việc thu hẹp vị trí có thể có bằng cách so sánh ở mỗi cấp độ.

c) Chương trình tạo cây tìm kiếm nhị phân ở Hình 9. Sau đó, in ra màn hình các khóa có trong cây này theo thứ tự tăng dần.ưới đây là mã chương trình để tạo cây tìm kiếm nhị phân như trong Hình 9 và in ra các khóa theo thứ tự tăng dần:

class Node:

    def __init__(self, key):

       self.left = None

       self.right = None

        self.val = key

def insert(root, key):

    if root is None:

        return Node(key)

    else:

        if root.val < key:

           root.right = insert(root.right, key)

        else:

           root.left = insert(root.left, key)

    return root

def inorder_traversal(root):

    if root:

       inorder_traversal(root.left)

       print(root.val, end=' ')

       inorder_traversal(root.right)

# Tạo cây tìm kiếm nhị phân từ các giá trị trong Hình 9

values = [25, 15, 50, 10, 20, 35, 70, 12, 18, 24, 31, 44, 66, 90]

root = Node(values[0])

for value in values[1:]:

    insert(root, value)

# In các khóa theo thứ tự tăng dần

inorder_traversal(root)

 


Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Lời giải

Bạn cần đăng ký gói VIP ( giá chỉ từ 199K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.

Nâng cấp VIP

Vietjack official store
Đăng ký gói thi VIP

VIP +1 - Luyện thi tất cả các đề có trên Website trong 1 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +3 - Luyện thi tất cả các đề có trên Website trong 3 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +6 - Luyện thi tất cả các đề có trên Website trong 6 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay

VIP +12 - Luyện thi tất cả các đề có trên Website trong 12 tháng

  • Hơn 100K đề thi thử, đề minh hoạ, chính thức các năm
  • Với 2tr+ câu hỏi theo các mức độ Nhận biết, Thông hiểu, Vận dụng
  • Tải xuống đề thi [DOCX] với đầy đủ đáp án
  • Xem bài giảng đính kèm củng cố thêm kiến thức
  • Bao gồm tất cả các bậc từ Tiểu học đến Đại học
  • Chặn hiển thị quảng cáo tăng khả năng tập trung ôn luyện

Mua ngay