Câu hỏi:

01/10/2024 61

Cho tập hợp số nguyên dương A = {28, 21, 43, 13, 23, 35, 50, 10, 15, 22, 27, 30, 40, 47, 52).

a) Viết chương trình tạo cây tìm kiếm nhị phân T biểu diễn tập hợp A.

b) Vẽ minh hoạ cây T.

c) Viết chương trình kiểm tra giá trị x = 10 có xuất hiện trong cây tìm kiếm nhị phân T hay không.

d) Viết chương trình xuất ra màn hình các giá trị của tập hợp A được sắp xếp giảm dần.

Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).

Tổng ôn toán Tổng ôn sử Các môn khác

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

a) Viết chương trình tạo cây tìm kiếm nhị phân T biểu diễn tập hợp A

Code như sau:

class TreeNode:

    def __init__(self, value):

       self.value = value

       self.left = None

       self.right = None

 

def insert(root, value):

    if root is None:

        return TreeNode(value)

    else:

        if value < root.value:

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

        else:

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

    return root

def build_bst(values):

    root = None

    for value in values:

        root = insert(root, value)

    return root

# Tập hợp số nguyên dương A

A = {28, 21, 43, 13, 23, 35, 50, 10, 15, 22, 27, 30, 40, 47, 52}

# Tạo cây tìm kiếm nhị phân T

root = build_bst(A)

b) Vẽ minh hoạ cây T

Chúng ta sẽ lần lượt chèn các giá trị vào cây BST. Dưới đây là cách cây T sẽ trông như sau khi tất cả các giá trị đã được chèn vào:

javascript

Sao chép mã

 

c) Viết chương trình kiểm tra giá trị x = 10 có xuất hiện trong cây tìm kiếm nhị phân T hay không

Dưới đây là chương trình kiểm tra giá trị x = 10 có xuất hiện trong cây tìm kiếm nhị phân T hay không:

def search_bst(node, value):

    if node is None:

        return False

    if node.value == value:

        return True

    elif value < node.value:

        return search_bst(node.left, value)

    else:

        return search_bst(node.right, value)

# Kiểm tra giá trị x = 10

x = 10

if search_bst(root, x):

   print(f"Giá trị {x} có trong cây.")

else:

   print(f"Giá trị {x} không có trong cây.")

d) Viết chương trình xuất ra màn hình các giá trị của tập hợp A được sắp xếp giảm dần

Dưới đây là chương trình để xuất ra màn hình các giá trị của tập hợp A được sắp xếp giảm dần:

def inorder_traversal(node, result):

    if node is not None:

       inorder_traversal(node.left, result)

       result.append(node.value)

       inorder_traversal(node.right, result)

def sorted_descending_bst(root):

    result = []

   inorder_traversal(root, result)

    return sorted(result, reverse=True)

# Xuất ra màn hình các giá trị của tập hợp A được sắp xếp giảm dần

sorted_values = sorted_descending_bst(root)

print("Các giá trị của tập hợp A được sắp xếp giảm dần:")

print(sorted_values)

Tổng hợp chương trình

Dưới đây là chương trình đầy đủ bao gồm tất cả các phần:

class TreeNode:

    def __init__(self, value):

       self.value = value

       self.left = None

       self.right = None

def insert(root, value):

    if root is None:

        return TreeNode(value)

    else:

        if value < root.value:

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

        else:

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

    return root

def build_bst(values):

    root = None

    for value in values:

        root = insert(root, value)

    return root

def search_bst(node, value):

    if node is None:

        return False

    if node.value == value:

        return True

    elif value < node.value:

        return search_bst(node.left, value)

    else:

        return search_bst(node.right, value)

def inorder_traversal(node, result):

    if node is not None:

       inorder_traversal(node.left, result)

       result.append(node.value)

       inorder_traversal(node.right, result)

def sorted_descending_bst(root):

    result = []

   inorder_traversal(root, result)

    return sorted(result, reverse=True)

# Tập hợp số nguyên dương A

A = {28, 21, 43, 13, 23, 35, 50, 10, 15, 22, 27, 30, 40, 47, 52}

# Tạo cây tìm kiếm nhị phân T

root = build_bst(A)

# Kiểm tra giá trị x = 10

x = 10

if search_bst(root, x):

   print(f"Giá trị {x} có trong cây.")

else:

   print(f"Giá trị {x} không có trong cây.")

 

# Xuất ra màn hình các giá trị của tập hợp A được sắp xếp giảm dần

sorted_values = sorted_descending_bst(root)

print("Các giá trị của tập hợp A được sắp xếp giảm dần:")

print(sorted_values)

Chương trình trên thực hiện các nhiệm vụ yêu cầu từ việc tạo cây tìm kiếm nhị phân, kiểm tra giá trị x = 10, đến việc sắp xếp và xuất ra màn hình các giá trị của tập hợp A theo thứ tự giảm dần.

 


 

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

Câu 1:

Cho cây tìm kiếm nhị phân ở Hình 1.

Ở bài học trước, em đã được giới thiệu về việc giá trị các nút trong cây tìm kiếm nhị phân được sắp xếp theo một trình tự nhất định. Em hãy mô phỏng thuật toán để xuất giá trị các nút của cây tìm kiếm nhị phân trong Hình 1 theo thứ tự tăng dần.

Media VietJack

Xem đáp án » 01/10/2024 134

Câu 2:

Ứng dụng cây tìm kiếm nhị phân để giải bài toán tìm kiếm

Yêu cầu: Cho cây tìm kiếm nhị phần (Hình 2) biểu diễn tập hợp số nguyên dương

A = {46, 49, 31, 45, 41, 50, 47, 28, 30, 48}.

Em hãy viết chương trình kiểm tra giá trị x = 41 có xuất hiện trong tập hợp A hay không.

Media VietJack

Xem đáp án » 01/10/2024 68

Câu 3:

Tìm thanh gỗ theo yêu cầu

Tại xưởng gỗ, bác thợ mộc cần tìm một thanh gỗ có kích thước là k (cm) trong n thanh gỗ có các kích thước khác nhau để đóng tủ.

Yêu cầu: Để giúp bác thợ mộc tìm thanh gỗ đúng với kích thước đã cho. Hãy viết chương trình.

Xem đáp án » 01/10/2024 63

Câu 4:

Sắp xếp mảng dùng cây tìm kiếm nhị phân

Yêu cầu: Sắp xếp một mảng số nguyên a tăng dần.

Xem đáp án » 01/10/2024 46

Bình luận


Bình luận
Đăng ký gói thi VIP

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

  • Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

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

  • Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

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

  • Siêu tiết kiệm - Được thi tất cả các đề của các lớp có trên Khoahoc.vietjack.com
  • Ngân hàng câu hỏi trắc nghiệm theo các mức độ Nhận biết, Thông hiểu, Vận dụng, Vận dụng cao.
  • Luyện chuyên sâu, rèn tốc độ với trọn bộ đề thi thử, đề minh họa, chính thức các năm.
  • Hỏi bài tập với đội ngũ chuyên môn cao của chúng tôi.

Đặt mua

Vietjack official store