码迷,mamicode.com
首页 >  
搜索关键字:完全二叉树    ( 970个结果
如何在网络中传输二叉树(C++源代码实现)
前些日子有朋友遇到这个问题来问我,我觉得有点意思,便实现了代码,写篇文章做个总结,与网友分享。   需求: 实现两个API,在客户端:传入一个二叉树的根结点指针,输出可以在网络中传输的ASCII串。在服务器端:根据传入的ASCII串来解析生成一个二叉树,返回二叉树的根结点指针。   思路: 看到这个问题,首先想到的是二叉树补全法,将这课二叉树补全,变成一颗完全二叉树,再使用数组进行存储...
分类:编程语言   时间:2014-07-15 12:34:36    阅读次数:268
优先队列之二叉堆与d-堆
二叉堆简介平时所说的堆,若没加任何修饰,一般就是指二叉堆。同二叉树一样,堆也有两个性质,即结构性和堆序性。正如AVL树一样,对堆的以此操作可能破坏者两个性质中的一个,因此,堆的操作必须要到堆的所有性质都被满足时才能终止。结构性质堆是一棵完全填满的二叉树,因为完全二叉树很有规律,所以它可以用一个数组表...
分类:其他好文   时间:2014-07-10 11:53:48    阅读次数:1258
算法导论——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. 定义 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称作这个根的左子树和右子树的二叉树组成。 二叉树的5中基本形态:   满二叉树:一棵深度为k且有2k-1个结点的二又树称为满二叉树,每一层上的结点数都达到最大值。 完全二叉树:若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下...
分类:其他好文   时间:2014-06-30 09:57:51    阅读次数:149
《啊哈!算法》第7章 神奇的树
第3节 堆排序把n个元素建立一个堆,首先将这n个结点以自顶向下、从左到右的方式从1到n编码,这样可以把n个结点转换成一颗完全二叉树紧接着从最后一个非叶子结点(结点编号为n/2)开始到根节点(结点编号为1),逐个扫描所有结点,根据需要将当前结点向下调整,直到以当前结点为根结点的子树符合堆的特性。#in...
分类:其他好文   时间:2014-06-27 18:35:05    阅读次数:120
STL之heap相关操作算法
堆(heap)是一种非常重要的数据结构(这里我们讨论的是二叉堆),它是一棵满足特定条件的完全二叉树,堆的定义如下: 堆是一棵树完全二叉树,对于该完全二叉树中的每一个结点x,其关键字大于等于(或小于等于)其左右孩子结点,而其左右子树均为一个二叉堆。...
分类:其他好文   时间:2014-06-27 08:41:58    阅读次数:225
结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆、斜堆
实现优先队列结构主要是通过堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二项堆、斐波那契堆、pairing 堆等。1. 二叉堆1.1. 定义完全二叉树,根最小。存储时使用层序。1.2. 操作(1). insert(上滤)插入末尾 26,不断向上比较,大于26则交换位置,小于则停止。(2). delet...
分类:其他好文   时间:2014-06-27 00:53:45    阅读次数:369
堆排序之Java实现
堆排序思想: 堆排序,顾名思义,就是基于堆。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元素一定是这个堆中的最大值。其实我们的堆排序算法就是抓住了堆的这一特点,每次都取堆顶的元素,将其放在序列最后面,然后将剩余的元素重新调整为...
分类:编程语言   时间:2014-06-24 15:43:29    阅读次数:193
970条   上一页 1 ... 92 93 94 95 96 97 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!