声明:本文完全没有定量分析,需要定量分析的,请随便查阅一本数据结构的书籍或网页。
二叉堆:拥有删除最大(小)权值节点以及插入任意节点操作,是一颗完全二叉树,其完全性由插入和删除动作来保证。
先看看什么是完全二叉树,不过为了引出完全二叉树的定义还要先看看什么是满二叉树:所有叶子节点都在同一层的二叉树,并且树高h和节点数满足:节点数目为 2*h-1。完全二叉树就是:深度为h节点数目为n的完全二叉树的每个节点都与深度为h的满二叉树的节点从1到n一一对应。
进一步看看插入和删除最值节点如何满足二叉堆的完全性。先看插入,插入的初始位置应该是叶子节点,哪个叶子节点呢?是最后一层从左到右的下一个叶子节点,如下图: