码迷,mamicode.com
首页 >  
搜索关键字:完全二叉树    ( 970个结果
数据结构基础(19) --堆与堆排序
完全二叉树 首先让我们回顾一下完全二叉树的两个性质:  性质1:具有n个结点的完全二叉树的深度为[logn](向下取整)+1。  性质2:若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:    (1) 若 i=1,则该结点是二叉树的根,无双亲,否则,编号为 [i/2](向下取整)的结点为其双亲结点;    (2) 若 2i>n,...
分类:编程语言   时间:2015-01-13 21:40:06    阅读次数:221
C++算法之 判断是否为完全二叉树
判断完全二叉树: 完全二叉树,除最后一层外,每一层上的节点树都达到了最大值;在最后一层上只缺少右边的若干节点! 算法思路: 按层次(从上到下,从左到右)遍历二叉树,当遇到一个节点的左子树为空时,则该节点右子树必须为空,且后面遍历的节点左 右子树都必须为空,否则不是完全二叉树。 代码: bool IsCompleteBTree(BTree* pRoot) { if (pRoot =...
分类:编程语言   时间:2015-01-12 13:06:28    阅读次数:475
二叉堆(Binary Heap)
一. 二叉堆的性质 堆是一种具有堆序性的完全二叉树. 作为一种完全二叉树, (假定空树的高度是-1)它的高度是floor(logN), 高度为h的结点有2^h到2^(h+1) - 1个, 父节点的下标为floor(i/2), 左孩子的下标为2i, 右孩子的下标为2i+1 而所谓堆序性就是(以最小堆为...
分类:其他好文   时间:2015-01-12 09:14:35    阅读次数:133
堆排序
堆是一种完全二叉树,因此可以用数组来表示。给定节点下标i,1 #define PARENT(i) ((i) >> 1)2 3 #define LEFT(i) ((i) = A[i]堆排序的原理为:1、首先构建一棵大顶堆2、交换根节点和堆的最后一个节点,堆大小减一3、重复2,直达堆大小为1voi...
分类:编程语言   时间:2015-01-09 00:05:19    阅读次数:196
堆排序的Python实现
堆排序的思想: 堆是一种数据结构,可以将堆看作一棵完全二叉树,这棵二叉树满足,任何一个非叶节点的值都不大于(或不小于)其左右孩子节点的值。 将一个无序序列调整为一个堆,就可以找出这个序列的最大值(或最小值),然后将找出的这个值交换到序列的最后一个,这样有序序列就元素就增加一个,无序序列元素就减少一个...
分类:编程语言   时间:2015-01-06 13:31:23    阅读次数:204
【算法导论】堆排序
(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。二叉堆可以分为两种形式:最大堆和最小堆。若将记录按从大到小排列,建“小”顶堆。若将记录按从小到大排,建“大”顶堆。说明:在堆排序算法中,我们使用的是最大堆,最小堆通常用于构造优先队列。算法分析:时间复杂度是O(nlogn)。堆排序属于原址排序:...
分类:编程语言   时间:2015-01-05 23:09:50    阅读次数:390
[算法]二叉查找树
【简介】 二叉查找树是一种数据结构,它支持多种动态集合操作。 在二叉查找树上执行的基本操作的时间与树的高度成正比。对于一棵含有n个节点的完全二叉树,这些操作的最坏情况运行时间为O(n)。 【结构体】 一棵二叉查找树按二叉树结构来组织的。 // 二叉查找树节点 struct TreeNode { int val; TreeNode *left; Tree...
分类:编程语言   时间:2015-01-02 16:06:45    阅读次数:209
堆以及堆排序
1. 堆 二叉堆是一个数组,它可以被看成一个近似的完全二叉树。 二叉堆有两种形式:最大堆和最小堆。在最大堆中,父节点的值总是大于等于任何一个子节点的值。因此,堆中的最大元素放在根节点中,并且在任一子树中,该字数包含的所有节点的值都不大于该子树根节点的值。最小堆是指父节点的值总是小于或等于任一子节.....
分类:编程语言   时间:2014-12-30 14:56:14    阅读次数:209
堆排序
堆排序是对简单选择排序算法的一种改进,在每次选择最小记录的同时,根据比较结果对其他记录做出相应的调整。堆是具有下列性质的完全二叉树:每个节点的值都大于(小于)或者等于其左右孩子节点的值,为大顶堆(小于)。堆排序的基本思想是:从最后一个含有叶子节点的节点开始将待排序列构造成一个堆,然后将堆顶元素与末尾...
分类:编程语言   时间:2014-12-23 10:10:55    阅读次数:182
二叉树的构造与遍历(前序、中序、后序)
注意: 构造二叉树的时候要用双重指针,用单重指针时,要有返回值。代码如下:/*此处输入空格代表空,默认按前序遍历完全二叉树的方式输入数据形参是在执行函数时自动分配的,没有执行这个函数之前不占用存储空间,当函数执行完毕后释放这个形参,所以我们要使用到双重指针来构造树。这样,我们传进去的是树节点的指针....
分类:其他好文   时间:2014-12-18 00:12:40    阅读次数:140
970条   上一页 1 ... 84 85 86 87 88 ... 97 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!