ACM -- 堆详解

今天总结一下堆的相关内容,
之前总结过树的相关知识,其实堆的结构就是一个完全二叉树

现在总结堆的两条重要性质:

1、堆的节点的值总是不大于(不小于)其父节点的值
2、堆无论什么情况下,总是一棵完全二叉树

因为堆是一个完全二叉树结构,使得堆得时间复杂度为O(logn)

堆分为两种情况:大根堆和小根堆
大根堆:顾名思义,就是根节点大,根节点总是大于其子节点
小根堆:相反,根节点总是小于其子节点

堆的两种常用操作方式:

在堆中插入元素

	往堆中填入元素的时候可以直接将元素填到最后,然后依次进行比较,如果是大根堆,如果要插入的节点
	大于其父节点,则进行调换,直到最后形成一个完全二叉树结构

在堆中删除元素:

   对于最小堆和最大堆而言,删除是针对于根节点而言。
   对于删除操作,将二叉树的最后一个节点替换到根节点,然后自顶向下,递归调整。
点赞