定义: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点; 一棵深度为k,且有2^k-1个节点 ...
分类:
其他好文 时间:
2018-01-23 20:34:43
阅读次数:
147
题目大意 1.题目描述 斜堆(skew heap)是一种常用的数据结构。 它也是二叉树,且满足与二叉堆相同的堆性质: 每个非根结点的值都比它父亲大。因此在整棵斜堆中,根的值最小。 . 但斜堆不必是平衡的,每个结点的左右儿子的大小关系也没有任何规定。 在本题中,斜堆中各个元素的值均不相同。 . 在斜堆 ...
分类:
其他好文 时间:
2018-01-21 20:37:50
阅读次数:
182
转载:Floyd最短路算法 转载:Dijkstra最短路算法 转载:巧秒的邻接表(数组实现) 转载:最常用的排序——快速排序 转载:二叉树 转载:开启树之旅 转载:二叉堆——神奇的优先队列(上) 转载:二叉堆——神奇的优先队列(下) ...
分类:
其他好文 时间:
2018-01-20 20:29:08
阅读次数:
167
经典的二叉堆已经可以在O(logn)的复杂度的情况下维护堆这样的数据结构,也有d-堆可以维护成O(logdn)(虽然pop操作的复杂度是dlogdn),然而这两种堆不能满足logn的合并操作,它们的经常是O(nlogn),即每次将一个堆中的堆顶拿出来放到另一个堆里。虽然有很多情况不经常合并,但有时候 ...
分类:
其他好文 时间:
2018-01-19 23:25:02
阅读次数:
743
1. 完全二叉树:叶节点只能出现在最后层或次下层,并且最下面一层的节点都集中在该层的最左边的二叉树。 2. 二叉堆:堆是一颗二叉树,并且满足下面的条件: (1)树的每一层都是满,除了最后一层的最右边元素 (2)任意一个父节点都大于或等于(小于或等于)两个子节点。(大于或等于的为最大堆,小于或等于的为 ...
分类:
编程语言 时间:
2018-01-17 01:13:05
阅读次数:
192
这道题很经典 。 考点:二叉堆,贪心 我写了两个版本。顺便复习一下手工堆。 系统堆版: 手工堆版: ...
分类:
其他好文 时间:
2017-12-22 23:52:55
阅读次数:
126
打印二叉堆:利用层级关系 我这里是先将堆排序,然后在sort里执行了打印堆的方法printAsTree() 执行结果: ...
分类:
编程语言 时间:
2017-12-03 16:25:21
阅读次数:
173
一、堆的概念 所谓堆,它是一个数组,也能够被看成一个近似的全然二叉树。树上每一个结点相应数组的一个元素。二叉堆分为二种:最大堆和最小堆。本文主要介绍最大堆,最小堆类似。最大堆的特点:对于随意某个结点,该结点的值大于左孩子、右孩子的值,可是左右孩子的值没有要求。 二、堆排序算法 首先,按堆的定义将数组 ...
分类:
编程语言 时间:
2017-12-02 15:12:16
阅读次数:
136
最近复习了下堆排序的知识, 写下这篇文章和大家交流 。主要内容: 1. 什么是二叉堆 2. 二叉堆的表示方法 3. 二叉堆节点间的位置关系 4. 堆有序化的基本算法:上浮和下沉 5. 二叉堆的基本操作:插入元素和删除最大元素 6. 堆排序 ...
分类:
编程语言 时间:
2017-11-25 13:02:08
阅读次数:
250
堆: ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大 ...
分类:
编程语言 时间:
2017-11-16 20:52:13
阅读次数:
249