题目:计算完全二叉树的节点数目(二分法) 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
我们知道堆也是一棵完全二叉树,一般是由数组来实现的。如果父结点的index是k, 那么它的左子结点index为2k+1, 右子结点的index为2k+2. 一个比较自然的想法就是,给树的每个结点标上index, 每个结点的index必须小于树的总结点数目。 实现如下. public class Tr
分类:
其他好文 时间:
2016-01-31 02:59:58
阅读次数:
170
参考文献:https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8F%89%E6%A0%91 1,N0=N2+1 N = N0 + N1 + N2; N = E + 1; E = N1*1 + N2*2; -> N0 = N2 + 1; 2,满二叉树和完全二叉树 满二
分类:
其他好文 时间:
2016-01-28 18:46:01
阅读次数:
151
堆排序是我们熟知的常用的排序算法。 首先先介绍一下什么是堆排序。堆指的并不是我们数据结构上分配内存的堆栈,在这里指的是大顶堆和小顶堆。大顶堆是指根节点数值大于左右孩子节点的完全二叉树,也有可能是满二叉树。总之,就是一颗存贮数值的树。我们可以利用根节点大于孩子节点这一特性对一组数组建立堆,不断取出根节
分类:
编程语言 时间:
2016-01-27 21:21:56
阅读次数:
252
堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。举例来说,对于n个元素的序列{R0, R1, ... , Rn}当且仅当满足下列关系之一时,称之为堆: (1) Ri = R2i+1 ...
分类:
编程语言 时间:
2016-01-22 18:01:43
阅读次数:
243
什么是堆? 优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是依照元素的优先级(关键字)大小,而不是元素进入队列的先后顺序。下面再次开始储存选择 ::>_<::堆堆堆,完全二叉树。。。。o(∩_∩)o 哈哈。。。我仿佛又燃烧了起来!
分类:
其他好文 时间:
2016-01-20 21:00:44
阅读次数:
115
说了那么多,下面该上正货了。二叉树的定义:一个有穷的节点的集合 这个集合可以为空 若不为空,则它是有根节点和称为其左子树Tl和右子树的两个不相交的二叉树组成。特殊的二叉树这个就不是完全二叉树
分类:
其他好文 时间:
2016-01-19 12:26:30
阅读次数:
112