二分搜索树是为了快速查找而生,它是一颗二叉树,每一个节点只有一个元素(值或键值对),左子树所有节点的值均小于父节点的值,右子树所有的值均大于父节点的值,左右子树也是一颗二分搜索树,而且没有键值相等的节点。它的查找、插入和删除的时间复杂度都与树高成比例,期望值是O(log n)。 但是插入数组如[], ...
分类:
其他好文 时间:
2020-01-23 14:00:42
阅读次数:
81
$K D\ Tree$是一种可以高效处理$k$维空间信息的数据结构 $K D\ Tree$具有二叉搜索树的形态,二叉搜索树上的每个结点都对应$k$维空间内的一个点。其每个子树中的点都在一个$k$维的超长方体内,这个超长方体内的所有点也都在这个子树中 同时用$ma$和$mi$来记录划分出的子空间的边界 ...
分类:
其他好文 时间:
2020-01-23 00:11:45
阅读次数:
65
笛卡尔树是一棵二叉树,每个节点的编号满足二叉搜索树的性质,即二叉树的中序遍历是原数列,每个节点的权值满足堆的性质,也就是说,$Treap$就是笛卡尔树 在笛卡尔树上两个点的$LCA$就是这一区间的最值 用增量法来建树,维护一个单调栈,栈内元素为右子树链 因为每个节点最多进栈出栈一次,所以时间复杂度是 ...
分类:
其他好文 时间:
2020-01-22 23:59:33
阅读次数:
124
501 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值 左子树和右子树都是二叉搜索树 例如: 给定 BST , 返回 ...
分类:
其他好文 时间:
2020-01-22 23:51:38
阅读次数:
90
线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即 ...
分类:
其他好文 时间:
2020-01-22 12:31:09
阅读次数:
55
有向图的强连通分量 一.定义 给定一张有向图。若对于任意两个节点x,y 既存在从x->y的路径,也存在从y->x的路径,则称该有向图为“强连通图”。 有向图的极大连通子图被称为强连通分量。 二.强连通分量的求法。 1.Tarjan算法 基于 dfs 的一种算法,每一个强连通分量为其搜索树的一棵子树, ...
分类:
其他好文 时间:
2020-01-21 21:47:56
阅读次数:
72
二分搜索树是二叉树的一种。 二叉树就是有左右节点,有唯一根节点的树类数据结构。二叉树具有天然递归结构,每个父亲节点的左右子树也是二叉树 class Node{ E e; Node left; Node right; } 上图是一个满二分搜索树,但用的时候不一定是满的, 符合条件就行。所以存储的元素必 ...
分类:
其他好文 时间:
2020-01-20 09:39:54
阅读次数:
69
简单介绍 二叉搜索树又叫二叉查找树。 是一种数据结构, 支持多种动态集合操作,包括查找,返回最小值,返回最大值, 返回前驱和后继节点,插入和删除 它既可以用作字典,也可以用做优先队列。 如果一颗二叉树满足这样的特性: 设 x为二叉查找树中的一个节点。 1.如果 y是x 的左子树的一个节点,则 key ...
分类:
其他好文 时间:
2020-01-18 14:25:11
阅读次数:
90
二叉排序树java实现 二叉树排序树是什么? 二叉排序树(Binary Sort Tree)又称二叉查找树、二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 左、右子树 ...
分类:
编程语言 时间:
2020-01-17 21:02:28
阅读次数:
62