前言
这里演示建小根堆的过程,以及插入一个节点,删除一个节点的调整过程,另外地这里不再演示大根堆,因为它们是类似的
插入操作
无论是大根堆还是小根堆,插入新元素时,通常先将新元素添加到堆的末尾,也就是完全二叉树的最后一个位置。这是因为堆是一种完全二叉树,保持其完全二叉树的形态能便于后续的操作和维护。添加到末尾后,新元素可能会破坏堆的性质,此时需要进行 “上浮” 操作来调整堆结构,使堆重新满足大根堆(父节点值大于等于子节点值)或小根堆(父节点值小于等于子节点值)的性质。
删除操作
在删除堆顶元素(大根堆的最大值或小根堆的最小值)时,通常的做法是将堆顶元素和堆的最后一个元素交换位置,然后移除最后一个元素(也就是原来的堆顶元素)。这样做的好处是能快速移除堆顶元素,同时保持堆是一个完全二叉树。不过交换后,新的堆顶元素可能会破坏堆的性质,所以需要进行 “下沉” 操作来调整堆结构,使堆重新满足相应的性质。