私はC#を使用してB +ツリーを実装しています。C#generic B + tree
私は理解しているように、ツリーノードは、レコードまたは他のノードへのポインタの順序番号、つまりリーフノードだけがレコードへの実際のポインタを保持するという、多数の(order - 1)キーを保持する必要があります。内部ノードは他のノードへのポインタを保持します。今私は、このような
などの値の配列にノードを配置しようとするとclass Node< K,V >
{
K [] keys ;
V [] values;
}
:
私はこの実装で持ってる問題は、Nodeクラスとして宣言されている
C#のジェネリックであります
_root.Values[0] = left ; // left being of type Node<K,V>
私は次のエラーを取得する:
Cannot implicitly convert type 'BTree_Library.Node' to 'V'
これを回避する方法を見つけようとしています。もう1つの方法は、ノードとレコード用に1つの配列を保持するように実装を変更することです。
ので、結論に:Cで
私が使用しているだろう:私はC#でその相当を探してい
(void* values;)
。私は主題について話していますが、ノードのポインタとノードのレコードを入れ替え可能であることに関して、B +ツリーの構造は正しく と理解していますか?仮定
_root.Values[0] = left
配列の代わりにリストを使用する - 配列に項目を追加することはできません。 –
@Martin、それはBツリーのポイントです。各ノードは一定数のキーと値を持っていますが、いくつかは空にすることができます。 – svick