蒟蒻最近学习了一些数据结构,下面是蒟蒻的总结。 $$$$ 1.线段树合并 === 所谓线段树合并,字面上理解,就是将两颗线段树合并在一起,所以多用于权值 线段树,而且多在 树形结构 的题中出现。然而对两颗满二叉树的合并一次复杂 度会达到$O(nlog_2n)$ 对于总操作$m$,一般来说每次就是动态 ...
分类:
其他好文 时间:
2019-09-02 11:24:21
阅读次数:
91
堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器。 堆是一个完全二叉树,每个节点与其子节点位置相对。父节点总是大于或等于子节点,这种情况下被叫作大顶堆,或者父节点总是小于或等于子节点,这种情况下叫作小顶堆。注意,给定父节点的子节点不一定按顺序排列。 创建堆 用来创建堆的函 ...
分类:
其他好文 时间:
2019-09-01 16:53:08
阅读次数:
81
堆是一个完全二叉树 用数组表示 a[1]表示堆顶数据 i是非叶子节点, 左节点是i*2 右节点是i*2+1 堆化函数(主要目的是保证某个非叶子节点以下的所有子节点都满足堆结构定义) 插入 删除 堆排序 1建堆 2排序 ...
分类:
编程语言 时间:
2019-09-01 14:44:38
阅读次数:
90
堆 堆就是一种利 用完全二叉树 来维护数据的一种数据结构,而当我们实际使用时使用数组来存储时,树中节点与数组中的值 相对应 ,也就是可以灵活运用 完全二叉树 的性质通过数组下标来维护堆。 想看Stl模板的堆请直达底部 为什么要选择堆? 堆的功能就是保持堆顶的元素最大/最小,本质上是一种 排序算法 , ...
分类:
其他好文 时间:
2019-08-30 23:09:00
阅读次数:
102
题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 相关题目: 判断一棵满二叉树是否为二叉搜索树:给定一棵满二叉树,判定该树是否为二叉搜索树,是的话打印True,不是的话打印False 将满二叉树转换为求和树:给满出二叉树,编写算法将其转化为求和树【求和 ...
分类:
其他好文 时间:
2019-08-29 18:33:49
阅读次数:
152
Description 小凸和小方相约玩密室逃脱,这个密室是一棵有 $n$ 个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。每个灯泡有个权值 $Ai$ ,每条边也有个权值 $bi$ 。点亮第 1 个灯泡不需要花费,之后每点亮 1 个新的灯泡 $V$ 的花费,等于上一个被点亮的灯泡 ...
分类:
其他好文 时间:
2019-08-24 13:13:54
阅读次数:
84
1.二叉树的根节点,子节点,双亲,祖宗,孩子,层次编号,深度,有关兄弟关系?度为2的树不是二叉树。 二叉树的定义与特征;二叉树的顺序存储和链式存储;二叉树的遍历;线索二叉树的基本概念和构造。 2.倾斜二叉树与完全二叉树 3.前中后序遍历 前根序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树 中根 ...
分类:
其他好文 时间:
2019-08-20 23:57:48
阅读次数:
177
题目描述思路分析测试用例Java代码代码链接题目描述请实现两个函数,分别用来序列化和反序列化二叉树。二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是... ...
分类:
其他好文 时间:
2019-08-19 10:05:43
阅读次数:
92
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 根据根结点是否是最大值还是最小值和子结点的键值是否小于还是大于它的父结点可分为两种堆,如下: 1.大顶堆:每个结点的键 ...
分类:
编程语言 时间:
2019-08-18 23:39:47
阅读次数:
109
树的存储: 二叉树的存储: 1. 连续存储(顺序存储)【完全二叉树】,以数组实现 优点: 查找某个节点的父节点和子节点(包括判断有没有子节点和父节点) 缺点: 耗用内存空间过大 2. 链式存储: 一个节点包含三个部分:左子节点地址、数据域、右子节点地址 优点:耗内存小 一般树的存储: 由于计算机的内 ...
分类:
其他好文 时间:
2019-08-17 23:43:06
阅读次数:
145