二叉堆的数组表示
遵循堆排序属性的完全二叉树称为**二叉堆**。
根据二叉堆的排序,它可以分为两种类型:
**最小堆**是指节点的值大于或等于其父节点值的堆。最小堆的根节点值最小。
**最大堆**是指节点的值小于或等于其父节点值的堆。最大堆的根节点值最大。
二叉堆的值通常表示为**数组**。二叉堆的数组表示如下:
根元素的索引为0。
如果i是数组中节点的索引,则与该节点相关的其他节点在数组中的索引为:
左孩子:(2*i)+1
右孩子:(2*i)+2
父节点:(i-1)/2
使用上述数组表示规则,我们可以用数组表示堆:
1 | 4 | 7 | 8 | 9 | 11 | 12 |
现在,我们可以讨论基于排序类型的堆:
**最小堆** - 根节点具有最小值。节点的值大于父节点的值。
示例:
数组表示:
1 | 4 | 7 | 6 | 9 | 10 | 8 |
**最大堆** - 根节点具有最大值。节点的值小于父节点的值。
示例:
数组表示:
11 | 8 | 9 | 6 | 4 | 5 | 1 |
广告