Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra heap có phải max heap Python

Cho mảng nums biểu diễn heap (cây nhị phân hoàn chỉnh). Kiểm tra có phải max heap không (mỗi nút lớn hơn hoặc bằng cả hai con).

Ví dụ: nums=[8,6,4,2,0,3] → True.

Giải thuật (Kiểm tra tính chất heap)

  1. Với mỗi chỉ số i, con trái = 2*i+1, con phải = 2*i+2 (0-based)
  2. Kiểm tra nums[i] >= nums[left] và nums[i] >= nums[right] (nếu con tồn tại)
  3. Nếu vi phạm → False, hết vòng lặp → True

Ví dụ triển khai

def solve(nums):
    n = len(nums)
    for i in range(n):
        left = 2 * i + 1
        right = 2 * i + 2
        if left < n and nums[i] < nums[left]:
            return False
        if right < n and nums[i] < nums[right]:
            return False
    return True

print(solve([8, 6, 4, 2, 0, 3]))

Đầu vào

[8, 6, 4, 2, 0, 3]

Đầu ra

True