目录
1. 数据结构树–>树基础
2. 数据结构树–>二叉树
3. 数据结构树–>二叉查找树\二叉排序树
4. 数据结构树–>平衡二叉树
5. 数据结构树–>霍夫曼树
6. 数据结构树–>红黑树
7. 数据结构树–>二叉堆
8. 数据结构树–>B树
9. 数据结构树–>B+树
二叉堆
1. 什么是二叉堆
首先二叉堆是一个完全二叉树。它又分最大堆与最小堆
1.1 最大堆
特性:父节点的值都大于或等于左右孩子的值。
1.2 最小堆
特性:与最大堆相反,父节点的值都小于或等于左右孩子的值。
2. 二叉堆的插入
2.1 插入位置
首先满足的完全二叉树的特性,所以我们新插入的节点是按照完全二叉树的下一个位置来插入的。
我们以最小堆为例
2.2 插入后"上浮"
插入节点与父节点比较,如果小于父节点则插入节点与父节点交换位置,递归操作,直到找到父节点比插入节点小。结果为:
最大堆的插入同样需要上浮,只是判断条件和最小堆上浮相反。
3. 二叉堆的删除
二叉堆的删除与插入正好相反,插入需要”上浮“,而删除需要的是 “下沉”
3.1 满足完全二叉树
首先我们要找到要删除的节点,根据完全二叉树的位置顺序找到最后一个节点,用最后一个节点替代要删除的节点。
如最小二叉堆我们要删除根节点
使用完全二叉树最后位置节点替代要删除的节点。
3.2 节点开始”下沉“
节点10与最小子节点2比较,大于—>节点10与节点2交换位置------>节点10与最小子节点7左比较,大于----->节点10与节点7交换位置---->节点10无子节点或小于最小子节点截止。
最终如图: