Bài tập  /  Bài đang cần trả lời

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.

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.

1 trả lời
Hỏi chi tiết
12
0
0
Trần Đan Phương
11/09 11:54:28

Để 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.")

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 12 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k