1 /* 2 * 二叉树 3 * 4 * (将完全二叉树的数组形式改为链表形式) 5 * 6 * 1 7 * 2 3 8 * ...
分类:
其他好文 时间:
2014-08-17 11:39:16
阅读次数:
345
1.小根堆
若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。
2.大根堆
若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。
3.结论
(1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。
(2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。
(3)...
分类:
其他好文 时间:
2014-08-12 13:35:44
阅读次数:
319
1、堆 一棵完全二叉树 大顶堆:所有非叶子节点元素均不小于其左右子树根节点的值 小顶堆:所有非叶子节点元素均不大于其左右子树根节点的值2、 初始化堆 ①一组无序元素R[0, 1, ..., n - 1], 先按照顺序将该组无序元素构造为一棵完全二叉树 ②从该二叉树的第一个非叶子结点开始调整...
分类:
其他好文 时间:
2014-08-12 03:06:43
阅读次数:
259
1. 堆堆:n个元素序列{k1,k2,...,ki,...,kn},当且仅当满足下列关系时称之为堆:(ki = k2i,ki >= k2i+1), (i = 1,2,3,4,...,n/2)若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆的含义表明,完全二叉树...
分类:
其他好文 时间:
2014-08-11 17:05:42
阅读次数:
253
声明:本文是对某高中生的竞赛论文学习的文章介绍: 二叉查找树能够支持多种动态集合操作。对于一个含有n个结点的完全二叉树,这些操作的最还情况运行时间是O(lgn),但如果树是含有n个结点的线性链,则这些操作的最坏情况运行时间为O(n)。而像红黑树、AVL树这种二叉查找树的变形在最坏情况下,仍能保持较....
分类:
其他好文 时间:
2014-08-08 01:32:25
阅读次数:
423
题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
运用队列,按层遍历,每次遍历一层时,添加新指针,由于每个节点只需要进队一次出队一次,时间复杂度为O(n),空间复杂度为O(n),具体代码如下:
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-06 19:10:42
阅读次数:
184
堆数据结构实际上是一种数组对象,是以数组的形式存储的,但是它可以被视为一颗完全二叉树,因此又叫二叉堆。堆分为以下两种类型:
大顶堆:父结点的值不小于其子结点的值,堆顶元素最大
小顶堆:父结点的值不大于其子结点的值,堆顶元素最小
堆排序的时间复杂度跟合并排序一样,都是O(nlgn),但是合并排序不是原地排序(原地排序:在排序过程中,只有常数个元素是保存在数组以外的空间),合并排序的多有元素都被...
分类:
其他好文 时间:
2014-08-05 22:34:10
阅读次数:
232
题目: 给定一个二叉树(假设是完全二叉树),把每个节点的next指针指向其右侧节点。
思路:首先想到的是,层序遍历树,在遍历的同时添加节点对右侧节点的指针。
另一种简洁的方法是采用递归来实现,间单直观。...
分类:
其他好文 时间:
2014-08-03 15:23:45
阅读次数:
246
二叉堆(binary heap) 二叉堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。同二叉查找树一样,堆也有两个性质,即结构性和堆序性。对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿子在左儿子后的单元2i+1中,它的父亲在[i/2](向下取整)中。因此,一个数据结构将由一个数组、....
分类:
其他好文 时间:
2014-08-03 12:30:25
阅读次数:
324
一、对堆排序的相关了解
1、堆排序的运行时间是 O(nlogn)
;
2、定义:
堆heap是一棵具有以下属性的二叉树——
(1)它是一棵完全二叉树;
(2)每个结点大于或等于它的任意一个孩子。
备注:完全二叉树的定义——除了最后一层没填满以及最后一层的叶子都是偏左放置的,其他层都是满的二叉树!
3、二叉堆有两种:最大堆和最小堆。在堆排序中我...
分类:
其他好文 时间:
2014-08-01 00:11:00
阅读次数:
269