Cho trước dãy A bao gồm các số nguyên và các giá trị None. Viết chương trình kiểm tra

Giải Chuyên đề Tin 12 Bài 7: Cây tìm kiếm nhị phân - Kết nối tri thức

Vận dụng 4 trang 36 Chuyên đề Tin học 12: Cho trước dãy A bao gồm các số nguyên và các giá trị None. Viết chương trình kiểm tra xem A có phải là biểu diễn của một cây tìm kiếm nhị phân hay không.

Ví dụ:

Dãy [5, 3, 6, None, 4, None, 10] là biểu diễn của cây tìm kiếm nhị phân.

Dãy [2, 1, 5, None, 3, 4, 10] không là biểu diễn của cây tìm kiếm nhị phân (mặc dù dãy này là biểu diễn của cây nhị phân hoàn chỉnh đã biến đổi).

Quảng cáo

Lời giải:

Để kiểm tra xem một dãy đã cho có phải là biểu diễn của một cây tìm kiếm nhị phân hay không, có thể sử dụng một thuật toán kiểm tra tính chất của cây tìm kiếm nhị phân.

Một cây tìm kiếm nhị phân có tính chất sau:

  • Mỗi nút trong cây có giá trị lớn hơn hoặc bằng tất cả các nút trong cây con bên trái của nó.
  • Mỗi nút trong cây có giá trị nhỏ hơn tất cả các nút trong cây con bên phải của nó.

Dựa trên các tính chất trên chương trình sẽ được viết như sau:

class TreeNode:

    def __init__(self, val):

        self.val = val

        self.left = None

        self.right = None

def is_binary_search_tree(arr):

    def helper(index, min_val, max_val):

        if index >= len(arr) or arr[index] is None:

            return True

        if min_val < arr[index] < max_val:

            left_child_index = 2 * index + 1

            right_child_index = 2 * index + 2

            return (helper(left_child_index, min_val, arr[index]) and

                    helper(right_child_index, arr[index], max_val))

        else:

            return False

    return helper(0, float('-inf'), float('inf'))

# Ví dụ

arr1 = [5, 3, 6, None, 4, None, 10]

arr2 = [2, 1, 5, None, 3, 4, 10]

if is_binary_search_tree(arr1):

    print("Dãy arr1 là biểu diễn của một cây tìm kiếm nhị phân.")

else:

    print("Dãy arr1 không là biểu diễn của một cây tìm kiếm nhị phân.")

if is_binary_search_tree(arr2):

    print("Dãy arr2 là biểu diễn của một cây tìm kiếm nhị phân.")

else:

    print("Dãy arr2 không là biểu diễn của một cây tìm kiếm nhị phân.")

Quảng cáo

Lời giải bài tập Chuyên đề Tin 12 Bài 7: Cây tìm kiếm nhị phân hay, ngắn gọn khác:

Quảng cáo
Quảng cáo

Xem thêm lời giải bài tập Chuyên đề học tập Tin học 12 Kết nối tri thức hay, ngắn gọn khác:

Xem thêm các tài liệu học tốt lớp 12 hay khác:

ĐỀ THI, GIÁO ÁN, GÓI THI ONLINE DÀNH CHO GIÁO VIÊN VÀ PHỤ HUYNH LỚP 12

Bộ giáo án, đề thi, bài giảng powerpoint, khóa học dành cho các thầy cô và học sinh lớp 12, đẩy đủ các bộ sách cánh diều, kết nối tri thức, chân trời sáng tạo tại https://tailieugiaovien.com.vn/ . Hỗ trợ zalo VietJack Official


Giải bài tập lớp 12 sách mới các môn học
Tài liệu giáo viên