大顶堆构造过程

堆是一种特殊的完全二叉树,使用数组存储二叉树时,若某个非叶子节点存储在下标为i的位置,其左右孩子节点分别存储在下标为2i+1和2i+2的位置。

堆可以分为大顶堆和小顶堆,对大顶堆来说,任意非叶子节点不小于其左右孩子节点,对于小顶堆来说,任意非叶子节点不大于其左右孩子节点。若使用数组存储大顶堆,则满足:arr[i] >= arr[2i+1] && arr[i] >=arr[2i+2](i为非叶子节点的在数组中的下标)


 

 构造大顶堆

基本思想:

1、从最后一个非叶子节点开始,逐一比较非叶子节点和其左右孩子节点

2、根据比较结果交换节点

3、因为交换可能导致孩子节点不再满足大顶堆的性质,所以需要对孩子节点进行调整。

例子:

 大顶堆构造过程

初始

从最后一个非叶子结点开始,分别比较非叶结点和其左右孩子节点的大小。

 大顶堆构造过程

无需调整

 大顶堆构造过程

无需调整

 大顶堆构造过程

无需调整

大顶堆构造过程

需要交换元素

 大顶堆构造过程

无需调整

 大顶堆构造过程

交换元素位置

 大顶堆构造过程

大顶堆构造过程 

交换后可能造成被交换的孩子节点不满足堆的性质,因此每次交换后需要重新对交换的孩子节点进行调整。

 大顶堆构造过程
 大顶堆构造过程
 大顶堆构造过程

 

 

 大顶堆构造过程
 大顶堆构造过程

大顶堆构造过程 

大顶堆建立完成

大顶堆构造过程

 

 

相关文章:

  • 2021-08-19
  • 2022-03-06
  • 2021-07-31
  • 2023-01-13
  • 2021-11-21
  • 2022-01-12
  • 2021-05-10
猜你喜欢
  • 2021-09-03
  • 2021-09-09
  • 2021-07-30
  • 2021-10-14
  • 2021-07-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案