判断一棵二叉树是否为最大堆

Determine whether a binary tree is max heap

我正在编写一个函数来确定给定的二叉树是否是最大堆。如果二叉树只有一个节点(根),它会被认为是有效的最大堆吗?

要被视为有效的最大堆,二叉树必须满足两个属性:

  1. 形状属性。树必须是 complete binary tree。也就是说,除最后一层外,每一层都必须是满的。如果最后一个不满,则左补。
  2. 堆属性。每个子节点必须小于或等于其父节点。

只有一个节点的树同时满足这两个属性,因此它是一个有效的最大堆。