4

各ノードに 3 つの double が格納されるバイナリ ツリーと、各ノードに 6 つの double が格納される別のツリーを作成する方法を見つけようとしています。

私が抱えている問題は、検索メソッドと挿入メソッドを実装する方法を考え出すことです (削除する必要はありません)。

基本的に、私のツリーは x、y、z の値を保持しており、find を呼び出すと、見つけようとしている値に最も近い x、y、z の値を含むノードが返されます。

この問題にどのように取り組むべきですか?また、解決策のアイデアは何ですか?

ありがとう!

4

3 に答える 3

4

特定の要素の最近傍を見つけることもできるkd ツリーデータ構造を探しているようです。

于 2012-06-06T20:41:32.970 に答える
1
 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>>();
于 2012-06-06T20:40:47.917 に答える
0

基本的に、ノードごとに 1 つの値を保存します。これらの x、y、z 値を 3D ポイントとして扱うことができます。1 つのノードの左側に (0, 0, 0) の近くに配置し、右側にさらにノードを保持します。このような構造があれば、通常の二分木と同じようにデータを検索して挿入することができます。

于 2012-06-06T20:38:07.183 に答える