質問:ツリー ノードをレベルごとに表示するにはどうすればよいですか? 時間とスペースの効率的な解決策を教えてください。
例 :
A
/ \
B C
/ \ / \
D E F G
void PrintTree(struct tree *root);
出力: レベルごとにツリー ノードを出力する必要があります
A
B C
D E F G
質問:ツリー ノードをレベルごとに表示するにはどうすればよいですか? 時間とスペースの効率的な解決策を教えてください。
例 :
A
/ \
B C
/ \ / \
D E F G
void PrintTree(struct tree *root);
出力: レベルごとにツリー ノードを出力する必要があります
A
B C
D E F G
SOのスペースと時間を節約するには:
あなたが野蛮だと感じていて、自分のレベルについて非常に単純に考えたい場合は
...
したがって、ルートから始めます。
その子を最初のキューに追加します。
それらを通り抜け、子供たちを 2 番目のキューに追加します。
2 番目のキューに切り替え、ステップ スルーして、子を最初のキューにプッシュします。
ワックスオン、ワックスオフ。
実際には、幅優先検索またはスイープという同じアイデアを少し拡張しただけであり、さまざまなデータ構造に適用されるため、パターンとして考える価値があります。実際、ツリーまたはトライであるほとんどすべてのものと、そうでないものもいくつかあります。
この種の訪問は、幅優先またはレベル順と呼ばれます。追加情報はこちらでご覧いただけます。
基本的にあなた
これは、FIFO 構造を使用して簡単に実現できます。