随笔分类 - 数据结构
摘要:目录 1.单链表 2.双向链表 3.带头结点的链表 4.顺序栈 5.单链队列 6.循环队列 7.广义表头尾链表存储 8.广义表的扩展线性链表存储 9.二叉树二叉链表存储表示 10.树的双亲表示法 11.树的孩子链表存储表示(孩子表示法) 12.树的孩子兄弟表示法(二叉树表示法) 13.二叉树的二叉线
阅读全文
摘要:将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。 输入格式: 输入的第一行给出一个正整数N(≤20),随后一行给出N个不同的整数,其间以空格分隔。 输出格式: 在一行中输出顺序插入上述整数到一棵初始为空的AVL树后,该树的根结点的值。 输入样例1: 5 88 70
阅读全文
摘要:一. 定义与性质 1.外节点: 一棵二叉树中左儿子或右儿子为空的节点称为外节点。 2.左偏树(Leftist Tree) 是一种可并堆的实现。左偏树是一棵二叉树,每个节点维护的值有:左右儿子,键值val和dist。 其中键值val用于比较节点的大小,dist表示此节点到其子树中最近的外节点的距离,用
阅读全文
摘要:众所周知,线段树空间复杂度为O(N * 4),当 N 足够大时,容易爆掉。 动态开点,即字面意义,不必把整棵树的结构全部构建出来,只在最初建立一个结点表示整段区间,递归需要访问子树时再建立这个子树的结点。不再用完全二叉树编号两倍的规则。 动态开点线段树的优点:1.可以合并两个维护相同值域的线段树。2
阅读全文
摘要:扫描线一般运用在图形上面,它和它的字面意思十分相似,就是一条线在整个图上扫来扫去,它一般被用来解决图形面积,周长等问题。 OI Wiki 扫描线求面积并 P5490 【模板】扫描线 如图,假设三个矩形,求其并集的面积。考虑将每个矩形处理成两条平行于 y 轴的线段,左边的线段标记为 +1 ,右边的线段
阅读全文
摘要:###CDQ分治是一种离线分治算法,它基于时间顺序对操作序列进行分治。 看这样一个问题: 在一个三维坐标系中,有若干个点,每个点都有对应的坐标 ,我们要对于每个点求所有满足 的 j 的数
阅读全文
摘要:点分治常用于静态树上的路经统计问题,我们可以很自然的设计出这样一种分治算法: 1.找出根结点Root; 2.计算以Root为根的树的答案; 3.删除结点Root,分治解决Root的每个子树; 但这样并不是最优,当树退化成链时,递归层数就会退化为O(N), 整个程序时间复杂度也会退化成O(N ^ 2)
阅读全文
摘要: 树堆(Treap),在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的
阅读全文