数据结构——优先级队列(堆)

堆的概念

堆的分类:堆又称为优先队列和优先级队列,顾名思义,其进出堆的方式就是先进先出(FIrst In First Out),堆可以分为大根堆和小根堆

数据结构——优先级队列(堆)_第1张图片

数据结构——优先级队列(堆)_第2张图片
根据上图,堆的底层实现就是一颗二叉树,且是一颗完全二叉树,但是不一样的地方是,这个完成二叉树有着特定的排列规则,当堆为大根堆时,其顶上根中的值是最大的值,每颗子树同样满足这一特点,左右结点都比根结点的值要小。且可以看出越小的值跟靠近顶上的根节点,但是也不一定,,小根堆相反。

堆的顺序储存

顺序结构是通过数组来实现,顺序结构为了防止造成空间浪费,一般适合完全二叉树,而堆结构其底层就是完全二叉树,所以用数组来储存堆。所以堆在物理物理储存上,是数组,在逻辑上,是一颗完全二叉树,所以遍历二叉树的时候,最好用层序遍历
数据结构——优先级队列(堆)_第3张图片

你可能感兴趣的:(玩转数据结构,数据结构,java,算法)