一、题目 1、审题 2、分析 给出一个完全二叉树,添加二叉树的 next 指针指向。 二、解答 1、思路: 方法一、 采用队列进行层次遍历,遍历时添加 next 指针。 方法二、 利用两个指针进行层次遍历,添加 next 指针 方法三、 利用递归实现每一层的 next 指针。 ...
分类:
其他好文 时间:
2018-10-05 18:59:26
阅读次数:
172
动态区间最值问题(查询、更新) 线段树原理简单,但我看刘书上实现代码比较麻烦,于是试着自己实现了一下。说明如下: 1. 出于简化的目的,总是将线段总长视为2的方幂(如果不足,预先补齐。且这样不会本质上影响复杂度) 2. 建树:由于是完全二叉树,叶子结点的编号是连续的,建树时只要从底向上扫一遍即可。复 ...
分类:
其他好文 时间:
2018-10-03 22:55:13
阅读次数:
153
前言:前面了解了树的概念和基本的存储结构类型及树的分类,而在树中应用最广泛的种类是二叉树 一、简介 在树型结构中,如果每个父节点只有两个子节点,那么这样的树被称为二叉树(Binary tree)。其中,一个父结点的两个字节点分别叫做“左子节点”和“右子节点”。不过也不是所有父节点都有两个子节点,只有 ...
分类:
编程语言 时间:
2018-09-28 12:48:04
阅读次数:
196
堆是完全二叉树 子树是不相交的 度 节点拥有子树的个数 满二叉树: 每个节点上都有子节点(除了叶子节点) 完全二叉树: 叶子结点在倒数第一层和第二层,最下层的叶子结点集中在树的左部 ,在右边的话,左子树不能为空 二叉搜索树: 左边子节点小于父节点,右边子节点大于父节点 堆: 也叫队列,在堆尾插入,在 ...
分类:
编程语言 时间:
2018-09-27 01:49:59
阅读次数:
162
一、堆 完全二叉树 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),是不稳定排序 堆排序中的堆有大顶堆、小顶堆两种。他们都是完全二叉树 将该堆按照排序放入列表 1. 大顶堆: 所有的父节点的值都比孩子节点大,叶子节点值最小。r ...
分类:
编程语言 时间:
2018-09-26 01:12:49
阅读次数:
245
树的基本概念 度 结点的度 该结点子树的个数 树的度 该树中结点的最大度数 叶子结点(终端结点) 终端结点 高度/深度/层数 该树的行数 二叉树 满二叉树 完全二叉树 最多最下面两层上结点的度数最下一层上的结点都集中在该层左边的位置上 二叉树性质 第i层上的结点数目最多为2i 1 (i ≥ 1 ...
分类:
其他好文 时间:
2018-09-23 22:30:12
阅读次数:
225
1、什么是堆 (1) 堆是具有以下性质的完全二叉树(那么,什么是完全二叉树呢?完全二叉树是一种除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐的树):每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时 ...
分类:
编程语言 时间:
2018-09-22 14:45:10
阅读次数:
151
一、定义 堆的定义 堆其实就是一棵完全二叉树(若设二叉树的深度为h,除第 h 层外,其它各层 (1~h 1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边), 定义为:具有n个元素的序列(h1,h2,...hn),当且仅当满足(hi =h2i,hi =h2i+1)或(hi=h2i, ...
分类:
其他好文 时间:
2018-09-17 16:18:02
阅读次数:
218
自由树 自由树是一个连通的,无回路的无向图。 令G=(V,E)为一个无向图。下面的表述是等价的。 1) G是自由树。 2) G中任意两个顶点由唯一一条简单路径得到。 3) G是连通的,但从E中去掉任何边后得到的图都是非连通的。 4) G是无回路的,且|E|=|V|-1。 5) G是连通的,且|E|= ...
分类:
其他好文 时间:
2018-09-14 23:18:08
阅读次数:
169