堆是完全二叉树,完全二叉树最大的特点就是 把数据储存在数组里 通过父子结点的关系来做 不用实际建树 parent=leftchild/2; leftchild=2*parent 右就加1这儿指的是序号关系,储存的时候注意是利用树的逻辑图 从上到下 从左到右编号12345....。 建堆:实际是把数据 ...
分类:
其他好文 时间:
2017-07-20 00:44:31
阅读次数:
218
堆排序是将给定的序列看成完全二叉树的顺序存储结构来进行排序。 在学习堆排序之前,先了解一下完全二叉树的一个性质: 给定一颗完全二叉树bt,采用顺序存储结构来进行存储,那么如何表示父结点与左右孩子结点之间的关系呢? 下面分两种情况: (a).如果从下标为0的位置开始存储,那么对于下标为i的结点,其左孩 ...
分类:
编程语言 时间:
2017-07-11 22:55:14
阅读次数:
191
二叉树:二叉树是每个节点最多有两个子树的树结构。 满二叉树:一棵深度为K且有2^k-1个结点的二叉树称为满二叉树。 完全二叉树:每个结点与其对应深度的满二叉树一一对应。 二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树: A. 左子树若不为空,则左子树上所有节点的值均小于它的根结点值; B. ...
分类:
其他好文 时间:
2017-06-30 01:11:09
阅读次数:
259
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利 ...
分类:
其他好文 时间:
2017-06-29 17:48:45
阅读次数:
149
深入理解Java PriorityQueue PriorityQueue 本文github地址 Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让 ...
分类:
编程语言 时间:
2017-06-27 23:40:05
阅读次数:
331
转自:http://blog.csdn.net/metalseed/article/details/8039326 一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能 ...
分类:
其他好文 时间:
2017-06-27 10:58:24
阅读次数:
274
题意:关于一只要续命的青蛙(雾),一颗完全二叉树,它的标号正如我们所期望的根为1,左儿子为父节点*2,右儿子为父节点*2+1,然后老青蛙从根往下走,一共走K步,它需要n个灵魂,每走过一个点,可以减去或加上这个点的标号,输出一种可能方案,输入数据保证至少有一组解 1=<n<=1e9,N<=2k<=26 ...
分类:
其他好文 时间:
2017-06-23 15:47:14
阅读次数:
152
对于堆排序会涉及一些完全二叉树知识。对于待排序列{10, 2, 11, 8, 7},把它看成是一颗完全二叉树,如下图所示。 堆分为大根堆和小根堆:大根堆表示每个根节点均大于其子节点(L(i) >= L(2i) && L(i) >= L(2i + 1)),小根堆表示每个根节点均小于其子节点(L(i) ...
分类:
编程语言 时间:
2017-06-21 21:55:05
阅读次数:
245
1、概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。 2、线段树基本操作 线段树的基本操作主要包括构造线段树,区间查询和区间修改。 (1) 线段树构造 首先介绍构造线段树的方法:让根节点表示 ...
分类:
其他好文 时间:
2017-06-13 17:05:12
阅读次数:
253
定义 特点 特殊的二叉树 斜树 顾名思义,其中的结点都只有一个,又分为左斜树和右斜树,这时候又有疑惑了,这种数据结构不是有线性表一样吗,没错,线性表是一种特殊的树 满二叉树 完全二叉树 这个定义有点绕,简单来说就是所有的结点必须是有顺序的,不能跳跃存在 二叉树的性质 1.在二叉树的第i层至多有2的( ...
分类:
其他好文 时间:
2017-06-13 10:02:37
阅读次数:
129