数据结构学习——优先队列(堆)的基本概念
2015-04-13 20:22
411 查看
参考书籍《数据结构与算法分析——C语言描述》
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先被访问。(引用百度百科)而堆则正是这种优先队列的具体实现。
堆(二叉堆):是一棵完全被填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。最大堆和最小堆是二叉堆的两种形式。
最大堆:根结点的键值是所有堆结点键值中最大者,并依次递归下去,即子树的键值均小于父亲的键值。
最小堆:根结点的键值是所有堆结点键值中最小者,并依次递归下去,即子树的键值均大于父亲的键值。
d-堆:是二叉堆的简单推广,它恰像一个二叉堆,只是所有的节点都有d个儿子,因此,二叉堆是2-堆。
左式堆:对于堆中的每一个节点X,左儿子的零路径长至少与右儿子的零路径长一样大。左式堆除了保留堆的二叉树属性和最小堆属性外,有一个特征属性:任意节点的左孩子的零路径长(Npl)大于等于右孩子的Npl。这个特性决定了左式堆的不平衡性,并且明显左边会比较深,这就是左式堆的得来。由这个性质和上面提到的性质可以得到:左式堆任意结点的Npl为右孩子的Npl+1.
那么什么又叫零路径长呢?
零路径长Npl:从X到一个没有两个儿子的节点的最短路经长。因此,具有0个或1个儿子的节点的Npl为0。
在下图中:零路径长标记在树的节点内
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先被访问。(引用百度百科)而堆则正是这种优先队列的具体实现。
堆(二叉堆):是一棵完全被填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。最大堆和最小堆是二叉堆的两种形式。
最大堆:根结点的键值是所有堆结点键值中最大者,并依次递归下去,即子树的键值均小于父亲的键值。
最小堆:根结点的键值是所有堆结点键值中最小者,并依次递归下去,即子树的键值均大于父亲的键值。
d-堆:是二叉堆的简单推广,它恰像一个二叉堆,只是所有的节点都有d个儿子,因此,二叉堆是2-堆。
左式堆:对于堆中的每一个节点X,左儿子的零路径长至少与右儿子的零路径长一样大。左式堆除了保留堆的二叉树属性和最小堆属性外,有一个特征属性:任意节点的左孩子的零路径长(Npl)大于等于右孩子的Npl。这个特性决定了左式堆的不平衡性,并且明显左边会比较深,这就是左式堆的得来。由这个性质和上面提到的性质可以得到:左式堆任意结点的Npl为右孩子的Npl+1.
那么什么又叫零路径长呢?
零路径长Npl:从X到一个没有两个儿子的节点的最短路经长。因此,具有0个或1个儿子的节点的Npl为0。
在下图中:零路径长标记在树的节点内
相关文章推荐
- 什么是数据结构-数据结构学习笔记1.1(基本概念)
- 数据结构学习笔记16——查找的基本概念
- 数据结构学习——链表的基本概念和分类
- 数据结构学习——树的基本概念
- 数据结构基本概念 - 学习笔记
- 小蚂蚁学习数据结构(25)——图的基本概念和术语
- 数据结构学习笔记-基本概念(1)
- 数据结构学习—“一般树”的基本概念和知识
- 【数据结构】学习笔记(一)——基本概念和框架
- 数据结构 学习笔记(一):基本概念:什么是数据结构和算法,应用实例
- 考研数据结构学习1:绪论(上) 基本概念
- (一)数据结构基本概念和术语学习
- 最大子序列和-数据结构学习笔记1.3(基本概念)
- 学习数据结构 -> 数据结构的基本概念
- 严蔚敏数据结构学习(二)名词、术语、基本概念
- 什么是算法-数据结构学习笔记1.2(基本概念)
- 数据结构学习1基本概念和术语
- 数据结构学习笔记--基本概念
- 【学习笔记10】基本数据结构(栈 队列 链表 有根树)
- 学习Java的30个基本概念