こんにちは、私は mips で bst を実装しました。このツリーを印刷する必要があります。各ノードには次の 4 つの情報があります。
その価値
親の住所
左の子供の住所
右の子の住所
次の形式でツリーを印刷する必要があります。(x は子なしを意味します)
12
8-16
x-9 13-17
x-x x-11 x-x x-x
この印刷方法を実装する方法を提案していただけますか?
こんにちは、私は mips で bst を実装しました。このツリーを印刷する必要があります。各ノードには次の 4 つの情報があります。
その価値
親の住所
左の子供の住所
右の子の住所
次の形式でツリーを印刷する必要があります。(x は子なしを意味します)
12
8-16
x-9 13-17
x-x x-11 x-x x-x
この印刷方法を実装する方法を提案していただけますか?
バイナリ ツリーのレベルごとに出力する必要があるため、情報を出力する最も明白な方法は、幅優先探索法を使用してツリーをトラバースすることです。残りは簡単で、問題はないはずです。:)
ツリーを印刷する順序は、幅優先 (レベルごと) のトラバーサルです。1 つのオプションは次のとおりです。最初にツリーのルートでシードされた作業リストを維持します。次に、作業リストから繰り返しデキューし、現在の要素 (存在しない場合は x) を出力し、2 つの子を作業リストに追加します。おそらく、最初にノードの数を数え、その数のノードを出力したら停止することによって、ツリーの走査が完了したときを追跡する何らかの方法が必要になります。
とはいえ、MIPS でこれを行っているため、より簡単なオプションの 1 つは、ツリーを配列に線形化してから配列を出力することです。暗黙のバイナリ ヒープでノードに番号を付ける方法と同様の方法でノードに番号を付ける場合、再帰的/反復的にツリーをたどり、配列にツリー ノードを入力してから、すべてを出力する配列をたどることができます。
お役に立てれば!