たとえば、親の前に子供を順番に、または後から訪問することには、どのような意味がありますか? inorder、preorder、postorder トラバーサルは、ツリーを表す方法にすぎないことを理解しています。私は正しいですか?
2 に答える
インオーダー、ポストオーダー、プリオーダーは、ツリーを表す方法ではなく、ツリーをトラバースする方法です。興味深いのは、あるトラバーサルを別のトラバーサルよりも選択する理由です。
事前順序トラバーサルは、ノードとエッジを複製してバイナリ ツリーの完全な複製を作成するのに非常に役立ちます。また、(式ツリーから) 前置式を作成する場合にも役立ちます。
ノードと値の削除中にポストオーダー トラバーサルを使用すると、バイナリ ツリー全体を削除できます。同様に、バイナリ ツリーの後置表現を生成することもできます。
最後に、インオーダー トラバーサルは、基になるセットから順番に値を返すため、二分探索ツリーに役立ちます。
Pre-order、In-order、Post-orderは、ツリーをトラバースする3 つの方法です。上記の 3 種類のトラバーサルは、 Depth Firstトラバーサルに属します。
以下の写真を例に取ります。
Depth First Pre-orderは 、Node -> Left_Child -> Right-Child規則に従います。これを現在の例で使用すると、次のようになります。
A、B、D、E、C
Depth First In-Orderトラバーサルは、Left -Child -> Node -> Right-Child規則に従います。次のようになります。
D、B、E、A、C
Depth First Post-Orderトラバーサルは、Left -Node -> Right-Node -> Node規則に従います。それがどのように見えるかです:
D、E、B、C、A
Breadth First Level-Orderトラバーサルは、ルート ノードから開始し、ツリーの各レベルを下ってノードを左から右に読み取るトラバーサルです。次のようになります。
A、B、C、D、E