今天总结一下堆的相关内容,
之前总结过树的相关知识,其实堆的结构就是一个完全二叉树
现在总结堆的两条重要性质:
1、堆的节点的值总是不大于(不小于)其父节点的值
2、堆无论什么情况下,总是一棵完全二叉树
因为堆是一个完全二叉树结构,使得堆得时间复杂度为O(logn)
堆分为两种情况:大根堆和小根堆
大根堆:顾名思义,就是根节点大,根节点总是大于其子节点
小根堆:相反,根节点总是小于其子节点
堆的两种常用操作方式:
在堆中插入元素
往堆中填入元素的时候可以直接将元素填到最后,然后依次进行比较,如果是大根堆,如果要插入的节点
大于其父节点,则进行调换,直到最后形成一个完全二叉树结构
在堆中删除元素:
对于最小堆和最大堆而言,删除是针对于根节点而言。
对于删除操作,将二叉树的最后一个节点替换到根节点,然后自顶向下,递归调整。