KD树——附代码实现

1.KD树简介

kd树是一种树形结构,树的每个节点存放一个k维数据,某一节点的子节点可以看作是由过该节点一个平面切割后产生的,其具体演示如图:

(找到中间点,比中间点小的放到一起,比中间点大的放到一起)

2.为什么要使用KD树

kd树可以方便快速查找指定信息,节约时间提高效率

3.构建KD树的代码实现

from math import sqrt

class KDNode:
    def __init__(self, point, left=None, right=None,split_dim=0):
        self.point = point
        self.left = left
        self.right = right
        self.split_dim=split_dim #用于记录当前节点的分割维度,方便后续进行搜索时判断
 #注意:这里常见了KDNode类,用于构建KD树的节点,可以理解为数据储存结构   
class KD_Tree_builder:
    def build_tree(self, points, depth=0):
        #退出递归条件
        if len(points) == 0:
            return None
        #求维度
        k = len(points[0])
        #循环维度
        axis = depth % k
        points.sort(key=lambda x: x[axi
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值