二叉树 二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k 1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉 ...
分类:
其他好文 时间:
2019-01-06 21:57:35
阅读次数:
172
binary heap就是一种complete binary tree(完全二叉树)。也就是说,整棵binary tree除了最底层的叶节点之外,都是满的。而最底层的叶节点由左至右又不得有空隙。 以上是一个对heap的简单介绍。本文将用heap指代此种完全二叉树。那么在实际编写代码的时候怎么组织这种 ...
分类:
编程语言 时间:
2019-01-05 16:37:26
阅读次数:
192
堆(heap) 1. 堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 根节点最大的堆叫做最大堆、大根堆或大顶堆 根节点最小的堆叫做最小堆、小根堆或小顶堆 常见的堆还有二叉堆、斐波那契堆等。 2. 堆是在程序运行时 ...
分类:
其他好文 时间:
2019-01-03 22:41:04
阅读次数:
209
二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示。,如下图所示 从上图可以看出,右边的是一颗普通的二叉树,当它与左边的完全二叉树对比,发现它比完全二叉树少了第5号结点,所以在数组中用0表示 ...
分类:
编程语言 时间:
2019-01-03 21:47:04
阅读次数:
234
【题目】: 给定一棵完全二叉树的头节点head,返回这棵树的节点个数 【要求】: 如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法 题目来源:左程云老师《程序员代码面试指南》 ...
分类:
其他好文 时间:
2019-01-01 17:31:15
阅读次数:
120
堆排序是利用堆这种数据结构而设计的一种排序算法,属于选择排序,它的最坏、最好、平均复杂度均为O(Nlog2^N),属于不稳定排序;堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆;用简单的公式描述一下堆的定义 ...
分类:
编程语言 时间:
2018-12-31 22:39:18
阅读次数:
329
完全二叉树的节点个数 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例: 输入: 1 / \ ...
分类:
其他好文 时间:
2018-12-31 19:45:22
阅读次数:
185
未知出处 题意: 定义一个无穷长的数列,满足以下性质:$1.X_{2n}=-{X_{n}}$$2.X_{2n}=(-1)^{(n+1)}*X_{n}$$3.X_{2n-1}=(-1)^{(n+1)}*X_n$ 1e5个询问,求:$1.X_k$ $2.S_k$即前缀和 (大概是这样) 画一画递推式的图 ...
分类:
其他好文 时间:
2018-12-31 19:02:54
阅读次数:
176
算法之 堆的简单介绍 一、堆的分类 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小 二、堆的向下调整性质 前提:节点的左右子树都是堆,但是自身不是堆 三、堆排序 内置模块 优先队列:一些元素的集合,POP操作每次执行都会从优先队列中弹出最大( ...
分类:
编程语言 时间:
2018-12-27 03:26:41
阅读次数:
209
一、准备知识 1.堆 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二 ...
分类:
编程语言 时间:
2018-12-24 23:30:33
阅读次数:
248