二叉树的一些基础知识:
1.堆是特殊的完全二叉树,满二叉树绝对是完全二叉树,但完全二叉树不一定是满二叉树。
2.顺序结构存储的完全二叉树,令:头节点对应数组索引0,也可以将数组的第一位不存任何数据,或者置为 - 1,那么头节点位置从1开始,就刚好对应数组索引1的位置。
a.头节点对应数组索引0时
左孩子在数组中的位置 = index * 2 + 1
右孩子在数组中的位置 = index * 2 + 2
父节点在数组中的位置 = (i - 1) / 2,向下取整
b.头节点对应数组索引1时
左孩子在数组中的位置 = index * 2
右孩子在数组中的位置 = index * 2 + 1
父节点在数组中的位置 = i / 2,向下取整
3.堆最重要的是堆本身这个结构,堆的构建和堆化这两个过程是大部分涉及堆操作的基础。
堆分为大根堆和小根堆
a.大根堆,任意一个父节点的值大于左右孩子的值
b.小根堆,与大根堆相反
4