有关(大小)堆的一些随笔

大顶堆

首先可以使用数组存起每一个节点,利用索引表示根节点与左右子树之间的关系;

关系为:根节点=index(可以从零开始,后边的左右子树表示时 减去1 即可);左子树=index*2;右子树=index*2+1;

  1.插入add插入元素到堆尾,然后上浮
  2.删除 remove 将堆首与堆尾交换,之后删掉堆尾,然后堆首下沉/上浮
  3.上浮 ;比较该节点与其父节点大小,若不符合大顶堆的根节点最大原则,则与根节点交换位置,并且指向该父节点,继续循环比较至堆顶
  4.下沉:比较父节点与左右子节点,交换不符合顺序的根节点,之后指向子节点,直至最后

大顶堆 原则上与大顶堆相同;

猜你喜欢

转载自www.cnblogs.com/-jiuqi/p/13404924.html