二维二叉搜索树和中值切割

问题描述 投票:0回答:1

今天有人问我一个问题,要从一组坐标而不是一组数字构建 BST。所以输入将是未排序的坐标

[(1,2), (5,7), (0,5)]

或其他形式:

 x = [1,5,0]  y =[2,7,5]

选择树上的点的启发式方法是使用具有最大范围的轴(中值切割算法)。有人可以解释为什么这种启发式是最好的吗?我们试图在每个步骤上切掉尽可能多的点,因此我们可以让 y 轴的范围非常小,但有很多具有该范围的点,而 x 轴的范围很宽,我只是不明白为什么会这样正在产生最好的结果...如果有人可以非常简单地解释这一点,我将不胜感激。

algorithm binary-tree binary-search-tree
1个回答
0
投票

除了轴选择过程之外,您的树是一个 K-D 树

选择范围最大的轴客观上并不是“最佳”启发式,但它是一个很好的启发式。 在这种树中,每个节点都有一个对应的矩形空间区域。例如,当您搜索特定半径内的所有点时,您必须访问具有与目标盘重叠的区域的每个节点。

最大范围启发式尝试使每个节点的矩形区域尽可能正方形。这可以防止具有“远”点的节点与目标盘重叠,因此您不必搜索它们。另一方面,长而细的矩形会重叠许多远离其大部分点的搜索区域。

当节点矩形区域的长宽比与搜索区域的长宽比相同时,这是最佳的。

© www.soinside.com 2019 - 2024. All rights reserved.