本文共 337 字,大约阅读时间需要 1 分钟。
二叉树适合简单的一维查找,涉及到二维的查找就需要用到Kd-tree。k即为k-dim,k维的意思。
KD-tree和二叉树的原理是一样的。在二维平面中对平面不断切分。如图: 算法过程: 1、如果剩下了不多的点,就将其作一个点来看。 2、否则就使用一个超平面(我理解的超平面在这里是直线)来一分为二 3、迭代重复12两步 要么点在线上,要么不在线上。 kd-tree的构建: 代码段: 复杂度:O(n log n log n)-O(nlogn) kdtree查找: 核心部分: 红色为查询点,蓝线为最坏距离,黑色虚线为划分轴, 判断红点到黑线距离是否小于最坏距离+红点是否在这个区间内。 复杂度: 平衡二叉树:O(logn) 最坏:O(n)转载地址:http://ocexi.baihongyu.com/