定义
堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:
- 堆总是一棵完全二叉树;
- 堆中某个节点的值总是不大于或不小于其父节点的值;
操作
假设现在有一个堆(小根堆):
tot=1;
现在加入一个数7,我们将其看作一个节点,加入到堆:
这是我们发现没有改变堆的性质,于是我们不用理他,接着加入数3,同理,生成节点,加入到堆:
堆的性质依旧没有改变,继续加入数0:
堆的性质遭到了破坏,于是我们开始维护,将0移动至其父亲节点:
发现依旧不符合堆的性质,在往上移: