Ted 带你学习数据结构 之 二叉堆(Binary Heap)

二叉堆(Binary Heap)

(1)structure property

Heap(堆)是一个除了底层节点外的完全填满的二叉树,底层可以不完全,左到右填充节点。(a heap is a binary tree that completely filled, with the exception of bottom level, which is filled from left to right.)这样的树叫做完全二叉树。

完全二叉堆的通俗解释为: 上层节点全满时,下层才能有节点;且下层节点必须是从左往右添加的。

一个高度为h 的完全二叉树应该有以下的性质:

a) 有2^h到2^h-1个节点

b) 完全二叉树的高度为[logN](向下取整)

此时注意,当N为2的多次方时,h=logN+1;

c)他的左子节点在2*i,右子节点在(2*i+1)

d) 它的父节点在【i/2】(向下取整)

二叉堆是一种逻辑上的数据结构,而它是由数组来实现的。

下图显示了完全二叉树与数组的对应关系:

在这里插入图片描述

在这里插入图片描述

(2)heap order property

有两种结构:最大堆和最小堆。
最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。示意图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值