首先,先回顾队列的特点:先进先出。
1,入队元素放在队尾,出队元素从队头移出。
优先队列: 1,最大优先队列。
2,最小优先队列。
不再组合南浔先入先出的原则。
最大优先队列无论入队顺序如何,都是当前最大的元素优先出队。
最小优先队列无论入队顺序如何,都是当前最小的元素优先出队。
比如最大优先队列中有一元素为9,并且为该队列中最大元素,但是并不是队头元素,但是出队时,仍然让元素9首先出队。最小队列则相反,不论位置在哪儿,最小的优先出列。
2,二叉堆实现优先队列
2.1二叉堆的特性:
最大堆的堆顶是整个堆中的最大元素。
最小堆的堆顶是整个堆中的最小元素。
因此可以用最大堆来实现最大优先队列,每一次入队操作就是堆的插入操作,每一次出队操作就是删除堆顶节点。此处用到了上节所说的最大堆最小堆的插入删除节点操作。节点与左右孩子比较大小,大的上浮,小的下沉操作。这里就不列举图标展示了。
时间复杂度与二叉堆节点的操作一样,都是O(logn)。
小结:
树的概念:树是n个节点的有限集,有且仅有一个特定的称为根的节点。当N>1时,其余节点可分为m个互不相交的有限集,每一个集合本身又是一个树,称为根的子树。
二叉树的概念: 二叉树是树的一种特殊形式,每一个节点最多有两个孩子节点。二叉树包含完全二叉树和满二叉树两种形式。
二叉堆的遍历方式有几种:根据遍历节点之间的关系,可以分为前序遍历、中序遍历、后序遍历、层序遍历,从宏观角度划分可以划分为深度优先遍历和广度优先遍历两大类。
二叉堆的概念:二叉堆是一种特殊的完全二叉树,分为最大堆和最小堆。
在最大堆中,任何一个父节点的值,都大于或者等于它的左右节点的值。
在最小堆中,任何一个父节点的值,都小于或者等于它的左右节点的值。
优先队列:优先队列分为最大优先队列和最小优先队列。
在最大优先队列中,无论入队顺序如何,当前最大的元素都会优先出队,基于最大堆实现的。
在最小优先队列中,无论入队顺序如何,当前最小的元素都会优先出队,基于最小堆实现的。
下一节,开始复习排序算法。