K-D树、K-D-B树、B-K-D树

K-D树是二分查找树在K维空间的泛化,用于多维空间点的查找和范围查询。文章介绍了K-D树的平衡问题、K-D-B树的概念及其页分裂效率问题,以及为解决这些问题提出的B-K-D树。B-K-D树结合了二叉树和B+树的特性,优化了空间利用率和增删操作速度。
摘要由CSDN通过智能技术生成

K-D树在维基百科上定义是将K维空间中的点进行分割的数据结构,D是dimensional(维度)的缩写,K-D树是BSP(Binary Space Partitioning)的一种。

维基百科的解释很正式(看的迷迷糊糊)。简单的说,K-D树就是二分查找树在K维空间的泛化(更迷糊了😂)。

1、K维空间的二分查找树

之前的一篇文章中有讲过二分查找树(BST)这样基础的数据结构,它是基于二分查找的思想实现 O ( l o g 2 N ) O(log_2N) O(log2N)的插入和查找速度。

如果把BST中的所有元素看成一维线段上的所有点,从树的根节点开始每个节点都会把线段分成两段。

BST

所以BST本质上就是一维K-D树(或者叫做1-D树)

现在将树中的元素推广到二维平面上的点,树的每一层按照维度轮流划分。比如,奇数层按x轴划分,偶数层按y轴划分,这样就得到一棵二维K-D树(2-d树)

KD-Tree

同样我们可以将元素推广到三维空间中的点,那样我们可以得到一棵3d-tree。

3d-tree

理论上k-d树可以继续到4维,5维… 作为一个三维空间里的生物,就没法用图来展示这样的元素了😅

这里有一个二维K-D树的模拟程序能帮助我们更好的理解K-D树:

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值