更新说明
我们在此前已经编写过简单版的二叉大根堆V1.0,这次,换成二叉小根堆,命名为二叉堆V2.0。
大家也知道,堆是完全二叉树,存储方式借助动态数组实现顺序存储,依赖于父子结点之间的index关系实现类似于二叉树式的访问,也支持数组本身的按编号随机访问和顺序访问。
二叉堆和二叉搜索树有很大的不同,但新学的人可能会弄混,这里有二者的辨析文。
堆是很有用的一种数据结构,二叉堆是常见形式。 堆排序、优先队列、堆的其他变形……都离不开对二叉堆的理解。 很多算法题都能涉及到堆,堆还真是个好东西! 对于新手而言,也必须掌握二叉堆建堆、插入、删除、调整的代码,能编写堆排序的代码。 堆真的很重要,一定要掌握!!! 虽说有大根堆和小根堆,但无非一个是最大值在堆顶,一个是最小值在堆顶,其实是一个东西。不信的话,你品,你细品,又有什么差别呢? 好啦,开始正题,不懂的自己去学。
核心功能- void insert(x) → Insert x
- Comparable deleteMin() → Return and remove smallest item
- Comparable findMin() → Return smallest