我正在尝试找到一种方法来创建一个二叉树,其中每个节点中存储 3 个双精度,而另一个树中每个节点中存储 6 个双精度。
我遇到的问题是想办法实现查找和插入方法(不需要删除)。
基本上,我的树保存 x、y、z 值,当我调用 find 时,我希望它返回包含最接近我试图查找的 x、y 和 z 值的节点。
我应该如何解决这个问题以及解决方案的一些想法?
谢谢!
我正在尝试找到一种方法来创建一个二叉树,其中每个节点中存储 3 个双精度,而另一个树中每个节点中存储 6 个双精度。
我遇到的问题是想办法实现查找和插入方法(不需要删除)。
基本上,我的树保存 x、y、z 值,当我调用 find 时,我希望它返回包含最接近我试图查找的 x、y 和 z 值的节点。
我应该如何解决这个问题以及解决方案的一些想法?
谢谢!
public class BinaryTreeNode<T>
{
public T Value {get; set;}
public BinaryTreeNode<T> Left {get; set;}
public BinaryTreeNode<T> Right {get; set;}
public BinaryTreeNode<T> Seach(T forWhat)
{
if(Value == forWhat) return this;
BinaryTreeNode<T> leftResult = Left.Search(forWhat);
if(leftResult != null) return leftResult;
BinaryTreeNode<T> rightResult = Right.Search(forWhat);
if(rightResult != null) return rightResult;
return null;
}
}
BinaryTreeNode<Tuple<double, double, double>> threeDoublesTree = new BinaryTreeNode<Tuple<double, double, double>>();
BinaryTreeNode<Tuple<double, double, double, double, double, double>> sixDoublesTree = new BinaryTreeNode<Tuple<double, double, double, double, double, double>>();
基本上每个节点存储 1 个值。您可以将这些 x、y、z 值视为 3D 点。在一个节点的左侧,您放置更接近 (0, 0, 0) 的点,在右侧您持有更远的点。如果您有这样的结构,您可以像在普通二叉树中一样搜索和插入数据。