对于n个元素的序列{R0, R1, ... , Rn}当且仅当满足下列关系之一时,称之为堆: (1) Ri <= R2i+1 且 Ri <= R2i+2 (小顶堆) (2) Ri >= R2i+1 且 Ri >= R2i+2 (大顶堆) 堆其实是一个顺序存储的完全二叉树 完全二叉树: 顺序存储: 大 ...
分类:
编程语言 时间:
2017-10-15 19:45:28
阅读次数:
190
最优二叉树 1.树的路径长度 树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。 2.树的带权路径长度(Weighted Path Length of Tree,简记为WPL) 结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。 结点的带 ...
分类:
其他好文 时间:
2017-10-15 10:57:50
阅读次数:
183
手写堆 可以视作是一种完全二叉树结构 STL 可以用优先队列 ...
分类:
其他好文 时间:
2017-10-14 22:35:32
阅读次数:
147
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。 接下来M行 ...
分类:
其他好文 时间:
2017-10-14 21:02:14
阅读次数:
528
① 二叉树是不是树的特殊情况?答:不是!虽然二叉树也属于一种树结构,但它是另外单独定义的一种树,并非一般树的特例。它的子树有顺序规定,分为左子树和右子树。不能随意颠倒。②:满二叉树和完全二叉树有什么区别?答:满二叉树是叶子一个也不少的树,而完全二叉树虽然前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