如何检查数组是否为最小堆?

BeL*_*bda 7 c++ algorithm heap

我有以下数组.如何检查包含n个元素的数组是否为最小堆? 在此输入图像描述

woo*_*919 5

由于索引从1开始,(索引0包含0 - 为什么?),您可以确定给定节点子节点的索引,如下所示:

  • 让给定节点的索引为 i
  • i左撇子指数:2i
  • i正确的孩子的索引:2i + 1

因此,对于每个节点,您可以轻松检查两个子节点是否大于节点本身.