数据结构树-->二叉堆

目录

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无子节点或小于最小子节点截止。

最终如图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值