Câu hỏi:

26/06/2024 9

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 nhị phân hoàn chỉnh đã biến đổi hay không?

Ví dụ:

Dãy [10, 7, 0, 5, None, 3] là biểu diễn của cây nhị phân hoàn chỉnh đã biến đổi. Dãy [1, 6, None, 2, 3, None, 4] không là biểu diễn của cây nhị phân tổng quát nào. 

Siêu phẩm 30 đề thi thử THPT quốc gia 2024 do thầy cô VietJack biên soạn, chỉ từ 100k trên Shopee Mall.

Mua ngay

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Để kiểm tra xem một dãy đã cho có phải là biểu diễn của một cây nhị phân hoàn chỉnh đã biến đổi hay không, chúng ta có thể sử dụng một số quy tắc sau:\

- Dãy đó phải là biểu diễn của một cây nhị phân, tức là mỗi phần tử của dãy đều có thể là một nút hoặc None.

- Đối với mỗi nút trong dãy, nút trái của nó (nếu có) phải nằm ở vị trí 2*i + 1 trong dãy, và nút phải của nó (nếu có) phải nằm ở vị trí 2*i + 2 trong dãy, với i là vị trí của nút trong dãy (bắt đầu từ 0).

Dựa trên các quy tắc trên có thể viết chương trình như sau:

def is_complete_binary_tree(arr):

    # Kiểm tra dãy có phải là biểu diễn của một cây nhị phân không

    for i in range(len(arr)):

        if arr[i] is not None:

            # Kiểm tra nếu nút trái không vượt quá độ dài của dãy

            left_child_index = 2 * i + 1

            if left_child_index < len(arr) and arr[left_child_index] is None:

                return False

            # Kiểm tra nếu nút phải không vượt quá độ dài của dãy

            right_child_index = 2 * i + 2

            if right_child_index < len(arr) and arr[right_child_index] is None:

                return False

    return True

# Ví dụ

arr1 = [10, 7, 0, 5, None, 3]

arr2 = [1, 6, None, 2, 3, None, 4]

if is_complete_binary_tree(arr1):

    print("Dãy arr1 là biểu diễn của một cây nhị phân hoàn chỉnh đã biến đổi.")

else:

    print("Dãy arr1 không là biểu diễn của một cây nhị phân hoàn chỉnh đã biến đổi.")

if is_complete_binary_tree(arr2):

    print("Dãy arr2 là biểu diễn của một cây nhị phân hoàn chỉnh đã biến đổi.")

else:

    print("Dãy arr2 không là biểu diễn của một cây nhị phân hoàn chỉnh đã biến đổi.")

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

Câu 1:

Trong hình 7.5, em hãy cho biết cây nào là cây tìm kiếm nhị phân.

Trong hình 7.5, em hãy cho biết cây nào là cây tìm kiếm nhị phân. (ảnh 1)

 

 

Xem đáp án » 26/06/2024 28

Câu 2:

Thay đổi thứ tự chèn các phần tử vào cây nhị phân có tạo ra các cây tìm kiếm nhị phân khác nhau hay không? Cho ví dụ minh họa.

Xem đáp án » 26/06/2024 23

Câu 3:

Khi nào việc tìm kiếm trên cây tìm kiếm nhị phân là:

a) nhanh nhất?                           

b) chậm nhất?

Xem đáp án » 26/06/2024 22

Câu 4:

Với cây nhị phân đã có ở Câu 1, em hãy vẽ sơ đồ cây sau khi chèn khoá 14 và cho biết vị trí của khoá này ở trong cây.

Xem đáp án » 26/06/2024 21

Câu 5:

Cây tìm kiếm nhị phân T được thiết lập bằng cách chèn lần lượt các phần tử 3, 1, 6, 5, 0, 2, 4. Dùng sơ đồ mô tả các bước tìm kiếm giá trị khóa là:

a) 4                                   b) 10                                 c) 0

Xem đáp án » 26/06/2024 20

Câu 6:

Quan sát các cây nhị phân sau, em có nhận xét gì về giá trị của các nút trên cây?

Quan sát các cây nhị phân sau, em có nhận xét gì về giá trị của các nút trên cây? (ảnh 1)

Xem đáp án » 26/06/2024 20

Câu 7:

Từ các khóa 1, 2, 3 có thể tạo ra được bao nhiêu cây tìm kiếm nhị phân? Hãy vẽ sơ đồ mô tả các cây này.

Xem đáp án » 26/06/2024 20

Bình luận


Bình luận