私と私の友人は、データベース上のクラスに単純なDBMSを実装する必要があります。
DBMSの主要部分はすぐに使用できます。つまり、すべてのコマンド(挿入、削除、更新、選択)が徹底的にテストされており、かなり正常に機能しているようです。
最後の機能では、B +ツリーを実装する必要がありますが、これは私の正直な意見では非常に困難です。
私たちがやろうとしたのは、最初にメインメモリで動作する単純なB +ツリーを実装することです(ファイルベースのバージョンを実装する前に)。B +理論についてオンラインで読み、さまざまな擬似コードを研究した後、再帰的な実装を作成することができました。VS2010のデバッガーを使用してテストしましたが、非常にうまく機能しているようです。
問題は、作成されたツリーをある程度視覚化したいということです。これにより、デバッグが容易になると思います。つまり、実際のツリーを見ることができれば、結果が正しいかどうかを確実に知ることができます。
それで、例えば最も単純なケースを取り上げましょう。B +ツリーのノードに、データとして2つの整数と、子ノードへの3つのポインターがあるとします。
40、50、48、20、57、49の数字を挿入しましょう。次のWebサイトから:http ://www.seanster.com/BplusTree/BplusTree.html
次のアニメーションが表示されます。
矢印を追加しました。
次に、このツリーをC++で次のように印刷します。
[48|50]
[20|40] [48|49] [50|57]
しかし、どうすればいいのかわかりません。プレオーダー、ポストオーダー、インオーダーなどのツリートラバーサルについて読んだことがありますが、それらが私が望むことを達成するのに役立つとは思いません。
私が知っているのはルートノードだけです。そのルートノードから、次の方法でツリーをいくらかトラバースする必要があります。
- ルートにアクセス
- ルートを印刷
- ルートの子供たちを訪ねる
- 各子の値を出力します
- ルートの子ごとに、その子(ルートの孫)にアクセスします。
- 孫の値を印刷する
- 他の孫にも同じことをします
- 同じように孫の子供たちにも同じことをします
この問題に取り組むための最良の方法は何でしょうか?前もって感謝します