赞
踩
二叉堆:首先是一棵二叉树,其次这棵二叉树要满足结构性质和堆序性质
二叉堆常常用来实现优先级队列,在JDK的定时任务java.util.Timer中,就通过一个小顶堆TaskQueue来存放定时任务TimerTask。
二叉堆是一颗完全二叉树。
完全二叉树:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
这个定义看了就像没看一样,我们讲点通俗易懂的。
满二叉树每一层的节点都是满的:
如果一棵二叉树每一层的节点都是满的,这棵树就是满二叉树。下图就是一颗满二叉树。
满二叉树一定是一颗完全二叉树,但完全二叉树不一定是一颗满二叉树。
完全二叉树结构上很接近满二叉树,只是允许最后一层不满,并且中间不允许空洞。
下图就是一颗完全二叉树,中间没有空洞,虽然最后
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。