手写堆 可以视作是一种完全二叉树结构 STL 可以用优先队列 ...
分类:
其他好文 时间:
2017-10-14 22:35:32
阅读次数:
147
① 二叉树是不是树的特殊情况?答:不是!虽然二叉树也属于一种树结构,但它是另外单独定义的一种树,并非一般树的特例。它的子树有顺序规定,分为左子树和右子树。不能随意颠倒。②:满二叉树和完全二叉树有什么区别?答:满二叉树是叶子一个也不少的树,而完全二叉树虽然前n-1层是满的,但最底层却允许在右边缺少连续 ...
分类:
编程语言 时间:
2017-10-13 10:06:57
阅读次数:
267
图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; ...
分类:
编程语言 时间:
2017-10-12 19:01:34
阅读次数:
232
树的基本概念 (1)树(Tree)的概念:树是一种递归定义的数据结构,是一种重要的非线性数据结构。树可以是一棵空树,它没有任何的结点;也可以是一棵非空树,至少含有一个结点。 (2)根(Root):有且仅有一个结点的非空树,那个结点就是根。 (3)子树(Subtree):在一棵非空树中,除根外,其余所 ...
分类:
其他好文 时间:
2017-10-10 21:49:46
阅读次数:
184
学习参考:堆排序 Heap Sort、排序六 堆排序 堆结构:一棵完全二叉树。大根堆:K[ i ] < K[ 2i ] 、K[ i ] < K[ 2i+1 ] 。小根堆反之。 本文测试数据:《严奶奶数据结构》P281 由于笔者学业繁忙,没有编写使树形结构可视化的代码。各位读者请心中脑补。 堆调整函数 ...
分类:
编程语言 时间:
2017-10-09 14:11:01
阅读次数:
202
因为二叉堆满足完全二叉树,一颗高为h的完全二叉树有2^h到2^h-1个节点,那么就可以用数组来表示。public class HeapDemo>{ public HeapDemo(){ this(DEFAULT_CAPACITY); } public HeapDemo(int capacity){ ... ...
分类:
其他好文 时间:
2017-10-03 18:13:09
阅读次数:
142
1.将待排序列以一个完全二叉树存储,设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。 2.第一趟排序,从二叉树的最后一个根节点(有步骤1可知是值为12的节点)开始,调整当前节点所在的堆,使当前节点大于所有子节 ...
分类:
编程语言 时间:
2017-10-02 20:21:32
阅读次数:
292
又是一道思路清新的小清晰。 观察题目,如果我们确定了平民或者贵族的任意一方,我们便可以贪心的求出另一方,至此20分;我们发现层数十分小,那么我们就也是状压层数,用lca转移,线性dp,至此50分(好像数据很水这么打能A);至今我们没有用到他是一棵完全二叉树,那么我们发现如果进行树dp,也就是说从子节 ...
分类:
其他好文 时间:
2017-10-01 21:10:16
阅读次数:
142