【大顶堆的性质】大顶堆是一棵完全二叉树,且树中的每个节点的值都不小于它的孩子节点的值。我们可以用一个heap数组来表示它。【大顶堆的插入、删除】
大顶堆的插入:首先初始化插入位置为最后,然后从下往上调整堆(调整插入元素的位置)。在调整过程中,若当前节点的父亲节点小于插入元素,则将其父亲节点的值赋给当前节点,父亲节点作为当前节点,依此继续;否则当前节点即为插入位置。
大顶堆的删除:删除根,初始化最后一...
分类:
编程语言 时间:
2015-07-14 17:58:44
阅读次数:
330
堆排序虽然叫heap sort,但是和内存上的那个heap并没有实际关系。算法上,堆排序一般使用数组的形式来实现,即binary heap。我们可以将堆排序所使用的堆int[] heap视为一个完全二叉树,即,除非最后一层右侧有空结点,其他都为满结点。对于任意heap[i]有如下一些性质:1. i从...
分类:
编程语言 时间:
2015-07-14 15:31:31
阅读次数:
147
堆的定义堆是一个完全二叉树或者近似的完全二叉树堆的性质
父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。堆的存储一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2
堆的特点插入元素和弹出堆顶元素的时间复杂度lg(n)
判断序列是不是堆根据性质判...
分类:
其他好文 时间:
2015-07-13 22:28:39
阅读次数:
130
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,.....
分类:
编程语言 时间:
2015-07-13 22:18:12
阅读次数:
217
1.算法介绍 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]...
分类:
编程语言 时间:
2015-07-12 20:20:51
阅读次数:
161
二叉树的顺序存储结构就是用一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组的下标要能体现节点之间的逻辑关系。—–>一般只用于完全二叉树
链式存储—–>二叉链表
定义: lchild | data | rchild(两个指针域,一个数据域)typedef struct Node {
ElemType data;
struct Node *lchild...
分类:
其他好文 时间:
2015-07-11 18:34:13
阅读次数:
158
题目:
Given a complete binary tree, count the number of nodes.
Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completel...
分类:
编程语言 时间:
2015-07-09 22:42:58
阅读次数:
266
解法一:递归int countNodes(TreeNode* root){ if (root == NULL) return 0; TreeNode *pLeft = root->left; TreeNode *pRight = root->right; ...
分类:
其他好文 时间:
2015-07-09 17:55:25
阅读次数:
126
一、堆排序 (Heap ?sort) ? ? ?定义: 完全二叉树的非终端节点的值均不大于(不小于)子节点的值 ? ? ?存储结构: ?数组 | ?vector ? ? ?逻辑结构: ?完全二叉树 ? ? ?性质: ? ? ? ? ? ...
分类:
其他好文 时间:
2015-07-08 16:45:48
阅读次数:
121
思想:根据完全二叉树的定义,对完全二叉树按照从上到下、从左到右的层次遍历,应该满足一下两条要求:
●某节点没有左孩子,则一定无右孩子
●若某节点缺左或右孩子,则其所有后继一定无孩子
若不满足上述任何一条,均不为完全二叉树。
算法思路:采用层序遍历算法,用cm变量值表示迄今为止二叉树为完全二叉树(其初值为1,一旦发现不满足上述条件之一,则置cm为0),bj变量值表示迄今为止所有节点均...
分类:
编程语言 时间:
2015-07-08 02:07:38
阅读次数:
298