最大最小堆怎么删除和插入新的节点?时间复杂度是多少?
最大最小堆是一种基于完全二叉树的数据结构,它的特点是每个节点的值都大于等于(最大堆)或小于等于(最小堆)其子节点的值。
插入新节点:
- 将新节点插入到堆底最后一个位置。
- 将新节点与其父节点比较,如果不符合最大最小堆的性质,则交换两个节点的值。
- 重复执行步骤2,直到新节点满足最大最小堆的性质或者到达堆顶。
时间复杂度为O(log n),其中n为堆中节点数目。
删除节点:
- 将要删除的节点与堆底最后一个节点交换。
- 删除堆底最后一个节点。
- 将新的堆顶节点与其子节点比较,如果不符合最大最小堆的性质,则与其子节点中较大或较小的节点交换。
- 重复执行步骤3,直到新的堆顶节点满足最大最小堆的性质或者到达堆底。
时间复杂度为O(log n),其中n为堆中节点数目。
原文地址: https://www.cveoy.top/t/topic/bar1 著作权归作者所有。请勿转载和采集!