要するに、私は二分木をディスク(一般的な木、必ずしもBSTではない)に保存するための洗練された方法を学び/開発したいと思います。これが私の問題の説明です:
「二十の質問」のゲームを実装しています。内部ノードが質問で、葉が回答である二分木を作成しました。ノードの左側の子は、誰かが現在の質問に「はい」と答えた場合にたどるパスであり、右側の子は「いいえ」の答えです。これは二分探索木ではなく、左の子が「はい」で右の子が「いいえ」の二分木であることに注意してください。
プログラムは、ユーザーに自分の答えをコンピューターが考えていたものと区別するように求めることによって、nullの葉に遭遇した場合に、ツリーにノードを追加します。
ユーザーがプレイするとツリーが構築されるため、これは適切です。きちんとしていないのは、ツリーをディスクに保存する良い方法がないということです。
ツリーを配列表現として保存することを考えました(ノードiの場合、左の子は2i + 1、右の2i + 2、親の場合は(i-1)/ 2)が、クリーンではなく、最終的には無駄なスペースがたくさん。
スパースバイナリツリーをディスクに保存するためのエレガントなソリューションのアイデアはありますか?