几何体数据结构
文章平均质量分 83
Oo喵生oO
每个优秀的人,都有一段沉默的时光。那段时光,是付出了很多努力,却得不到结果的日子,我们把它叫做扎根!
展开
-
范围树(C++实现,两种建树方法,截窗查询)
范围树它长什么样子文字描述 网上和书上说的都比较抽象,根据我自己的理解,其实它就类似于一个多维的线段树,它的每一个维度是一个线段树,并且带有一个指向下一维度线段树的指针。这样子,如果是二维的范围树(第一个维度带有k个节点),它就是一个带有k个结点的线段树和k棵另一维度树的线段树的集合,其中第一维度的线段树,每个结点都带有指向以本结点为范围的下一维度线段树的指针。例图这里以取中点的线段树为例怎么建树思路1 这个问题只看为伪代码是没有任何...原创 2021-02-02 22:17:16 · 934 阅读 · 0 评论 -
线段树
线段树线段树定义: 是一个平衡的二叉树,每个内部结点v表示基本区间I,其被分成用于v的两个子结点的区间Il和Ir,分别为它的左右子树的基本区间,区间相对于线段的端点被分割。 其实它就是长这个样子:每个结点设置一个结点值(我们这里看求和的线段树),代表它的左右子树结点值的和,同时它代表了它左右子树的线段的和。(我代码里面的左端点是从0开始的) ...原创 2021-01-19 20:42:18 · 173 阅读 · 0 评论 -
Kd树(C++实现建树,插入结点,删除结点,找最邻近点)
Kd树的定义: Kd树是一颗二叉树,对它的每一个结点(叶结点除外)都设定一个划分,使得它左子树上的点的某一维度(与划分相同的维度)都满足比它的划分小,右子树上的点某一维度(与划分相同的维度)都满足比它的划分大。Kd树的基本操作(都以二维的为例):建立Kd树:思路: 肯定是想建立一颗相对平衡的二叉树,这样在后面找最邻近点的时候查找的效率会高很多。对于给定的n个点,求出x方向和y方向的方差,比较x方向和y方向方差的大小,如果x方向的方差比y方向的方差大,则本...原创 2021-01-25 21:47:12 · 5490 阅读 · 2 评论 -
区间树
一个区间树有一个由区间构成的集合S,其中取S中所有区间最左边的端点l和所有区间最右边的端点r,再取两者的中点记做Xmed,对于S中由Xmed穿过的区间集合,称为SMed,对SMed由Xmed,进行左右划分,分为ML和MR,分别表示SMed中所有区间被Xmed所截的左右区间的集合,如下图: 上图中S5,S6,S7称为LMed,S8和S9称为RMed,也就是S是由LMed,SMed和RMed组成,对于根节点root,SMed为S1,S2,S3,而LMed,RMed分别为ro...原创 2021-01-19 19:26:33 · 1754 阅读 · 0 评论 -
四叉树C++实现(增删改查,找邻居)
好久好久没更过了,因为入坑了一本天书的缘故,有一些比较特别的数据结构需要学一下,第一个就是这个四叉树,工作占的时间太多了,只能用剩下的时间来学一学了,话不多说,先来介绍一下基本的概念: 我们这里的四叉树指的是满四叉树,也就是每个节点要么有四个孩子节点,要么没有孩子节点,它在二维空间中可以表示对一个正方形进行四个象限的分割,从右上,左上,左下,右下这四个方向可以依次表示为第一象限,第二象限,第三象限和第四象限,如图:其中,根节点表示大的正方形,根节点下的四个节点分别表示对应的...原创 2021-01-10 20:39:57 · 3865 阅读 · 5 评论