在 Python 中检查堆的程序是否正在形成最大堆

假设我们有一个表示堆树的列表。众所周知,堆是一棵完全二叉树。我们必须检查元素是否正在形成最大堆。正如我们所知,对于最大堆,每个元素都大于其两个子元素。

因此,如果输入类似于 nums = [8, 6, 4, 2, 0, 3],那么输出将为 True,因为所有元素都大于其子元素。

示例

让我们看看以下实现以更好地理解 -

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

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

输入

[8, 6, 4, 2, 0, 3]
输出结果
True