二叉堆的数组表示


遵循堆排序属性的完全二叉树称为**二叉堆**。

根据二叉堆的排序,它可以分为两种类型:

**最小堆**是指节点的值大于或等于其父节点值的堆。最小堆的根节点值最小。

**最大堆**是指节点的值小于或等于其父节点值的堆。最大堆的根节点值最大。

二叉堆的值通常表示为**数组**。二叉堆的数组表示如下:

  • 根元素的索引为0。

  • 如果i是数组中节点的索引,则与该节点相关的其他节点在数组中的索引为:

    • 左孩子:(2*i)+1

    • 右孩子:(2*i)+2

    • 父节点:(i-1)/2

使用上述数组表示规则,我们可以用数组表示堆:

147891112

现在,我们可以讨论基于排序类型的堆:

  • **最小堆** - 根节点具有最小值。节点的值大于父节点的值。

示例:


数组表示:

14769108
  • **最大堆** - 根节点具有最大值。节点的值小于父节点的值。

示例:


数组表示:

11896451

更新于:2019年11月13日

3K+ 浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告