码迷,mamicode.com
首页 >  
搜索关键字:满二叉树 完全二叉树    ( 1098个结果
堆排序
二叉堆: 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆 堆排序:  由二叉堆的定义可知,堆顶元素(即...
分类:其他好文   时间:2014-07-23 22:34:19    阅读次数:193
STL 源码剖析 算法 stl_heap.h
heap ------------------------------------------------------------------------- binary heap 是一种完全二叉树。 隐式表示法:以 array 表述 tree。 小技巧:将 array 的 #0 元素保留,则第 i 个元素的左右子节点分别是 2i 和 2i + 1, 父节点是i/2 --> STL 里没有采用这种小技巧 将 array 无法动态改变大小,所以用 vector 替代 array 这个文件里提供了各种堆操作的...
分类:其他好文   时间:2014-07-22 00:32:34    阅读次数:256
POJ3264Balanced Lineup(最基础的线段树)
采用一维数组建树。(因为一维数组建的是完全二叉树,时间上比用孩子节点指针建树慢,不过基本可以忽略=-=) #include #include #include using namespace std; const int INF = 0xffffff0; int minV=INF; int maxV=-INF; struct Node { int L,R; int minV,ma...
分类:其他好文   时间:2014-07-20 22:28:44    阅读次数:216
线段树——转
一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)!性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿子...
分类:其他好文   时间:2014-07-19 13:26:16    阅读次数:256
如何在网络中传输二叉树(C++源代码实现)
前些日子有朋友遇到这个问题来问我,我觉得有点意思,便实现了代码,写篇文章做个总结,与网友分享。   需求: 实现两个API,在客户端:传入一个二叉树的根结点指针,输出可以在网络中传输的ASCII串。在服务器端:根据传入的ASCII串来解析生成一个二叉树,返回二叉树的根结点指针。   思路: 看到这个问题,首先想到的是二叉树补全法,将这课二叉树补全,变成一颗完全二叉树,再使用数组进行存储...
分类:编程语言   时间:2014-07-15 12:34:36    阅读次数:268
哈夫曼树
哈夫曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。节点的带权长度是这样定义的:节点的权值*根节点到该节点的路径长度。树的带权路径长度(Weighted Path Length of Tree,简记为WPL)则是指所有节点的带权长度和。哈夫曼树就是使WPL最小的一种树,并且哈夫曼树是满二叉树。它的构造方法是哈夫曼方法。哈夫曼树是这样构造的:...
分类:其他好文   时间:2014-07-12 19:49:04    阅读次数:252
算法导论——lec 06 堆排序
堆数据结构是一种数组对象,它可以被视为一颗完全二叉树,树中每个节点和数组中存放该节点值的那个元 素对应。如果表示堆的数组为A,那么树的根为A[1]。 一、 堆 1. 表示堆的数组A是一个具有两个属性的对象:length(A)是数组中的元素个数,heap-size(A)是存放在A中的堆的元素个数;A[heap-size(A)]之后的元素都不属于相应的堆。也就是:Heap-size(A)。 2....
分类:其他好文   时间:2014-07-08 20:23:53    阅读次数:222
最大堆(最小堆)
最大堆是一种很有用的数据结构,它是一颗完全二叉树,并且如果一个节点有儿子节点,其关键字都不小于其儿子节点的关键字。(最小树反之:节点值不大于儿子节点的完全二叉树。) 最大堆使用的一个典型的地方就是找出无序数字中,最大的一个数字。比如100亿整数中找出最小的前100个数字,典型的解决方案之一就是...
分类:其他好文   时间:2014-07-06 19:17:07    阅读次数:127
堆排序(heapsort)
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。时间复杂度为:O(n*logn),空间复杂度:O(1);平均时间复杂度和最坏时间复杂度都为:O(n*logn),但堆排序是不稳定排序。堆排序思路: 1.建立小堆:把堆看成一个完全二叉树,然后从这棵树的最大非叶子节点开始,比较...
分类:其他好文   时间:2014-07-05 11:12:28    阅读次数:249
数据结构与算法(二叉树)
二叉树的存储结构二叉树的存储可分为两种:顺序存储结构和链式存储结构。1.顺序存储结构把一个满二叉树自上而下、从左到右顺序编号,依次存放在数组内,可得到图6.8(a)所示的结果。设满二叉树结点在数组中的索引号为i,那么有如下性质。(1)如果i = 0,此结点为根结点,无双亲。(2)如果i > 0,则其...
分类:其他好文   时间:2014-07-03 12:43:35    阅读次数:288
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!