堆堆数据结构是一种数组对象,可以被视为一棵完全二叉树。对于给定的数组A,树的根为A[1],对于给定的下标为i的结点A[i],其父结点PARENT(i)=floor(i/2),左子结点LEFT(i)=2i,右子结点RIGHT(i)=2i+1叶级结点的高度可以认为是0,每向上一层,高度加一,定义树的告诉...
分类:
编程语言 时间:
2015-05-12 22:58:29
阅读次数:
164
题目大意:给出一棵完全二叉树,每个节点上都有一个开关,刚开始开关都是开的,球经过该节点后开关就关上了(根节点除外)。如果球经过该节点的兄弟节点,那么该节点的开关就又开了
现在往根节点放球,优先选择左边的节点走,如果左边的节点的开关关了,就选择右边的。球落到叶节点后就继续另一颗球,问第n颗球落到了哪个叶节点上解题思路:其实这题蛮水的,因为是二叉树,所以可以由球的奇偶行来判断球往哪个分支走,如果n %...
分类:
其他好文 时间:
2015-05-11 00:05:03
阅读次数:
205
二叉树是一种重要的数据结构.
二叉树是n(n>=0)个结点的有限集合,该集合或为空集,或由一个根结点和两棵互不相交的,分别称为根结点的左子树和右子树的二叉树组成(递归定义)
满二叉树:对于这样的一棵二叉树,如果所有分支结点都存在左右子树,且所有叶子节点都在同一层上,称这样的二叉树为满二叉树。
完全二叉树:如果一棵具有n个结点的二叉树的结构与满二叉树的前n个结点完全相同,称之为完全二叉树。
...
分类:
其他好文 时间:
2015-05-10 20:33:27
阅读次数:
156
堆排序是利用堆积树这种数据结构设计的一种算法。
要学习堆排序,我们首先要了解什么是二叉堆:
二叉堆是完全二叉树这这是近似完全二叉树。二叉堆可分为两种形式:最大堆和最小堆。
最大堆的性质是指某个结点的值至多与起父结点的值一样大,最小堆的性质就是指某个节点的值都大于其父结点的值。下图是一个最大堆和一个最小堆。
在堆排序中我们一般使用最大堆。我们要进行堆排序,首先需要把我们的数组转化成一个最大堆...
分类:
编程语言 时间:
2015-05-10 10:01:00
阅读次数:
170
堆排序是利用堆积树这种数据结构设计的一种算法。
要学习堆排序,我们首先要了解什么是二叉堆:
二叉堆是完全二叉树这这是近似完全二叉树。二叉堆可分为两种形式:最大堆和最小堆。
最大堆的性质是指某个结点的值至多与起父结点的值一样大,最小堆的性质就是指某个节点的值都大于其父结点的值。下图是一个最大堆和一个最小堆。
在堆排序中我们一般使用最大堆。我们要进行堆排序,首先需要把我们的数组转化成一...
分类:
编程语言 时间:
2015-05-10 09:44:24
阅读次数:
133
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都...
分类:
编程语言 时间:
2015-05-09 17:25:40
阅读次数:
166
//你知道为什么快速排序的时间复杂度是nlgn吗?
//我们将数组当作完全二叉数来看的话,放在小堆中,
//每个节点排序需要o(h),也就是h次,h是完全相应节点的二叉树高度,
//N为总共节点数,排好一个节点需要o(h)次,那么排好N个节点呢?下面:
//且2^h=N-1(完全二叉树性质);
//—>h=log2(N);当有N个节点需要排序是就是N*lg(N),
//得到快速排序的时...
分类:
编程语言 时间:
2015-05-09 10:22:04
阅读次数:
163
很有做的必要,题解链接http://blog.csdn.net/lyy289065406/article/details/6647917很多人直接用long long 过了却不知道为什么,其实数据有点水,上面给出的是正确的姿势中的一种。主要思想: 满二叉树的一个结点编号为k,则的子结点编号是2*k和...
分类:
其他好文 时间:
2015-05-08 01:34:39
阅读次数:
113
1.堆的概念
参考:http://www.cnblogs.com/luchen927/archive/2012/03/08/2381446.html
堆(heap),一种数据结构,堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元...
分类:
编程语言 时间:
2015-05-07 12:30:53
阅读次数:
137
二叉树顺序存储结构
二叉树的顺序存储结构就是用一维数组存储二义树中的结点并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲与孩子的关系,左右兄弟的关系等。
顺序存储结构一般只用于完全二叉树。
将这棵二叉树存入到数组中,相应的下标对应其同样的位置:
二叉链表
typedef struct BiTNode /* 结点结构 */
{
TElemType...
分类:
其他好文 时间:
2015-05-06 23:00:42
阅读次数:
193