二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。 二叉树有两种存储结构: 顺序存储结构; 链式存储结构: 二叉链式结构 三叉链式结构(包含父节点) 常用链式存储结构 1.顺序存储结构 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结 ...
分类:
其他好文 时间:
2019-06-16 10:08:47
阅读次数:
191
链表分类 单向链表 双向链表 优势: 删除某个节点更加高效, 可以快速找到前驱节点 可以方便的在某个节点前插入元素 循环链表 当要处理的数据具有环形结构的时候, 适合循环链表. 如约瑟夫环问题 双向循环链表 数组的缺点是大小固定, 一旦声明长度就要占用连续的内存空间, 当空间不够用时更换更大的空间, ...
分类:
编程语言 时间:
2019-06-09 16:57:38
阅读次数:
114
1. 概述 1.1 基本概念 双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,还增加一个指向其前一个节点的指针。其头指针head是唯一确定的。 从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,这种数据结构形式使得双向链表在查找时更加方便,特别是 ...
分类:
其他好文 时间:
2019-06-08 14:38:16
阅读次数:
74
1.线性表的定义 若将线性表记为(a1,...,ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。注:线性表只有一个前驱和后驱, ...
分类:
其他好文 时间:
2019-05-31 01:19:00
阅读次数:
122
链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继。指向另一个节点的引用叫做链。 链表分为单链表、双链表、循环链表。 一、单链表 插入:链表中插入一个节点的效率很高。向链表中插入一个节点,需要修改它前面的节点(前驱),使其指向新加入的节点,而新加入的节点则指向原来前驱指向的节点(见 ...
分类:
编程语言 时间:
2019-05-28 14:19:20
阅读次数:
131
今天来说一下线段树套Splay。顺便我也来重新敲一遍模板。 首先,明确一下Splay套线段树用来处理什么问题。它可以支持:插入x,删除x,单点修改,查询x在区间[l,r]的排名,查询区间[l,r]中排名为k的数,以及一个数在区间[l,r]中的前驱,后继。(应该还可以查询区间和等东西,还没写过) 其实 ...
分类:
其他好文 时间:
2019-05-26 19:45:41
阅读次数:
161
1,Dijkstra 算法一次性求得起始顶点到所有其它顶点的最短路径,如果想要求解任意两个顶点之间的最短路径,可将图中顶点作为起始顶点执行 n 次 Dijkstra 算法就可以了; 2,可能解决方案: 1,算法执行结束后,i 到 j 最短路径值存储于 dist[i][j] 中。最短路径前驱结点存储于 ...
分类:
其他好文 时间:
2019-05-26 17:44:06
阅读次数:
116
题目链接 思路 用一个平衡树维护点的编号和权值。这里的权值是自己赋上去的。 操作1,就把x从平衡树中删掉,然后将其权值变为最小值,重新插入。 操作2,与操作1类似,只要将其权值变为最大值再重新插入就行了。 操作3,其实就是将x与他的前驱或者后继交换。也很容易实现。 操作4,查询排名。 操作5,查找第 ...
分类:
其他好文 时间:
2019-05-25 19:45:13
阅读次数:
105
#include #include using namespace std; struct BiThrNode { int data; BiThrNode *left; BiThrNode *right; bool ltag;//0表示left指向左子,1表示left指向直接前驱 bool rtag... ...
分类:
其他好文 时间:
2019-05-23 20:50:36
阅读次数:
94
【二叉树】 1. 实现一个二叉查找树,并且支持插入、删除、查找操作 2. 实现查找二叉查找树中某个节点的后继、前驱节点 3. 实现二叉树前、中、后序以及按层遍历 练习: 1. 翻转二叉树 https://leetcode-cn.com/problems/invert-binary-tree/ 思路: ...
分类:
编程语言 时间:
2019-05-22 09:16:33
阅读次数:
140