题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2 解题报告: 这里的深搜有一点不同,就是,在深搜每一个点时,都要深搜每一个点,就是一个完全二叉树。 借鉴:http://blog.csdn.net/zxy_snow/ar
分类:
Web程序 时间:
2016-03-08 19:28:48
阅读次数:
137
二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子。满二叉树:高度为N的满二叉树有2^N-1个节点的二叉树。完全二叉树:若设二叉树的深度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这..
分类:
其他好文 时间:
2016-03-06 17:42:27
阅读次数:
215
定义:左式堆(Leftist Heaps)又称作最左堆、左倾堆,是计算机语言中较为常用的一个数据结构。左式堆作为堆的一种,保留了堆的一些属性。第1,左式堆仍然以二叉树的形式构建;第2,左式堆的任意结点的值比其子树任意结点值均小(最小堆的特性)。但和一般的二叉堆不同,左式堆不再是一棵完全二叉树(Com
分类:
其他好文 时间:
2016-03-04 22:43:17
阅读次数:
1484
由于是完全二叉树,所以我们可以预先知道整棵树的形状,因此可以判断根节点的两个子节点哪个是满二叉树,哪个不是满二叉树(必然是一边满,一边不满),对于满的子节点,我们可以直接求出它的不同子树的个数,也就是说我们只要递归搜不满的子节点就行了,这样一来,我们的复杂度就只有logn了。 当然还要解决相同子树判
分类:
其他好文 时间:
2016-03-04 01:55:14
阅读次数:
168
解法一,排序 先从大到小快排,然后扫前K个返回 时间复杂度:O(NlogN),空间复杂度O(1) 解法二,优先队列 前K个放入优先队列中,与最小堆顶元素比较大小,若大于则删除堆顶并插入;否则跳过 时间复杂度:O(NlogK),空间复杂度O(K) 解法三,堆调整 先将数组直接用完全二叉树存储,复杂度O
分类:
编程语言 时间:
2016-03-03 22:54:38
阅读次数:
258
二叉树特点
每个节点最多有两棵子树;
二叉树是有序的,即区分左右子树的次序。
完全二叉树
叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树左侧连续的位置。
如果有度为1的节点,只可能有一个,且该节点只有左孩子。
二叉树实现
这里只讲二叉链表实现,使用C++。
templateclass DataType>
struct BiNode
{
DataTy...
分类:
编程语言 时间:
2016-02-25 01:42:09
阅读次数:
265
题目:计算完全二叉树的节点数目(二分法) Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia:In a complete binary
分类:
其他好文 时间:
2016-02-23 00:49:06
阅读次数:
179
源代码: #include<cstdio>int m,n,num(0),h[100001];struct treetype{ int left,right,lefts,rights,sum; //本代码中,应用为半开半闭区间。}i[200020]; //应用了完全二叉树的结点个数公式。void x1
分类:
编程语言 时间:
2016-02-13 20:46:01
阅读次数:
207
一、生成小根堆 1、随机生成一棵完全二叉树 2、调整结点56及其子树 3、调整结点77及其子树 4、调整结点45及其子树 5、调整结点18及其子树 6、调整结点29及其子树 (1)调整几点29及其左、右儿子 (2)调整结点29及其左、右儿子 二、堆排序 1、取出当前最小元素3 (1)掐尖 (2)将结
分类:
编程语言 时间:
2016-02-09 08:05:05
阅读次数:
187
堆排序是相对其他排序稍微麻烦的排序,是一种利用堆的性质进行的选择排序。堆其实是一棵完全二叉树,只要任何一个非叶节点的关键字不大于或者不小于其左右孩子节点,就可以形成堆。堆分为大顶堆和小顶堆。由上述性质可知大顶堆的堆顶的关键字是所有关键字中最大的,小顶堆的堆顶的关键字是所有关键字中最小的。堆排序同快速排序一样都是不稳定排序。示例代码上传至:https://github.com/chenyufeng1...
分类:
编程语言 时间:
2016-02-03 14:34:40
阅读次数:
215