一、二叉排序树 因为只要是来讲treap的,所以关于二叉排序树的知识就不再赘述。 如果还不知道二叉排序树,可以先到别处学学再来看。 在二叉排序树中,我们将比该节点小的值放在该节点的左边,将比该节点大的值放在该节点的右边。 可是很显然,这样的话操作的时间复杂度就和树的深度有很大的关系。当树的形态为一条 ...
分类:
其他好文 时间:
2018-12-15 19:49:02
阅读次数:
801
本文目录 前两篇文章我们学习了一些树的基本概念以及常用操作,本篇我们了解一下二叉树的一种特殊形式:二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 一、二叉排序树定义 二叉排序树或者是一颗空树,或者是具有下列性质的二叉树: 若它 ...
分类:
移动开发 时间:
2018-12-04 13:08:10
阅读次数:
227
题目大意:给定一个有 N 个数组成的序列,在此基础上构建一棵二叉排序树,求每个节点(根节点除外)的父节点的编号是多少。 题解:首先,根据二叉排序树的不稳定性,直接模拟构建二叉排序树肯定会超时,因此需要用其他的数据结构来模拟 BST。在这里可以用平衡树来模拟,即:用一个 $set$ 来维护这 N 个序 ...
分类:
其他好文 时间:
2018-12-02 22:55:24
阅读次数:
369
二叉树可以用来做什么? 答:可以搜索、排序 可是,排序有快速排序、归并排序,查找有二分法、直接遍历等,那么为什么要用二叉树呢? 二叉树确实在实际运用中比较少,因为有更高级的树,但是二叉树作为一种最基本最典型的排序树,是研究其他树的基础。 我们知道,在有序数组中,可以快速找到特定的值;但是在有序数组内 ...
分类:
其他好文 时间:
2018-11-30 14:07:29
阅读次数:
145
前置技能:归并排序,树状数组。 cdq分治主要是用来离线解决一些奇怪的问题的。可以用来代替一些高级数据结构比如树套树或者KD-Tree之类的。。。 话说挑战2上的KD-Tree我到现在还没开始学。。。 cdq遇到在线的好像就死掉了?(雾 目前在博主的能力范围内: 主要用来解决多维(三维)偏序问题。 ...
分类:
其他好文 时间:
2018-11-28 01:10:24
阅读次数:
194
二叉搜索树其实就是满足左结点小于根,右结点大于根这类规则的树形结构。 ...
分类:
编程语言 时间:
2018-11-25 14:42:56
阅读次数:
234
排行榜有很多种设计方案: 比如数组,排序树,Redis的sort set等,还有这里说的跳表。 先科普一下跳表以及分析一下跳表优劣: 跳表:在普通链表中,给一些节点增加额外的指针,使得这些节点能够一次跨越更多的中间节点,提高了效率。 优点:相比普通链表,由于跳跃的特性,可以节省便利次数,时间复杂度上 ...
分类:
其他好文 时间:
2018-11-14 19:16:15
阅读次数:
833
原标题:漫画算法:什么是红黑树? ———————————— 二叉查找树(BST)具备什么特性呢? 1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。 下图中这棵树,就是一颗典型的二叉查找树: 1.查看根节点9 ...
分类:
其他好文 时间:
2018-11-06 00:53:41
阅读次数:
170
求逆序对个数的三种方法 逆序对: 对于一个序列 $a_1$,$a_2$,$a_3$..$a_n$,如果存在$a_i$ $a_j$且i using namespace std; const int maxn=1e6+10; template void read(T&res) { char ch=get ...
分类:
编程语言 时间:
2018-11-02 23:49:57
阅读次数:
224
二叉搜索树 二叉搜索树(BST)又称为二叉查找树、二叉排序树。 1.特征 二叉搜索树首先是一棵二叉树; 对任意节点,如果其左子树不为空,则左子树上任意节点的值均不大于它的根节点的值; 如果其右子树不为空,则右子树上任意节点的值均不大于它的根节点的值; 任意节点的左右子树也分别是二叉搜索树。 2.中序 ...
分类:
其他好文 时间:
2018-10-31 23:22:16
阅读次数:
145