N項ツリーの事前、事後、および順序付きウォークは何を意味しますか?


8

このWikipediaの記事で説明されているツリートラバーサルメソッドは、予約注文、注文注文、および注文注文です。これらの方法は二分木に限定されていますか?アルゴリズムは、左と右の子に関して定義されているようです。n進ツリーに使用できる場合、どのようにですか?

n-aryツリーには、任意のノードに1つの親とnの子があります。ここで、nは各ノードの任意の整数です。

必要な場合は、下の図を使用してこれを説明してください。

ここに画像の説明を入力してください

回答:


9

いいえ、二分木に限定されません。はい、プリオーダーとポストオーダーは進ツリーに使用できます。Wikipediaの記事の「左のサブツリーをトラバースする...右のサブツリーをトラバースする...」の手順を「各子について:トラバース関数を再帰的に呼び出して、その子をルートとするサブツリーをトラバースする」に置き換えるだけです。forループは、データ構造で見つかった順序で子を反復処理することを想定しています。たとえば、ここで示したような図では、左から右の順序で繰り返します。

実際、これはツリートラバーサルに関するWikipediaの記事で既に説明されています。https//en.wikipedia.org/wiki/Tree_traversal#Generic_treeを参照してください。これは、これを進ツリーに一般化する方法を正確に説明しています。予約注文トラバーサルは、予約注文操作が「現在のノードの表示」で、注文注文操作が「何もしない」であるトラバーサルです。注文後のトラバーサルとは、注文前の操作が「何もしない」で、注文後の操作が「現在のノードの表示」であるものです。

順序トラバーサルは特殊なケースです。おそらく、二分木に対してのみ意味があります。進ツリーの順序トラバーサルを定義する方法はいくつか考えられますが、それらはそれぞれ少し奇妙で不自然に感じられ、おそらく実際にはそれほど役に立ちません。したがって、順序トラバーサルはバイナリツリーに固有のものと考えるのがおそらく最善です。ツリーの順序どおりのトラバーサルのようなものを実行したい場合は、その意味が正確に決定する必要があります。これには標準的な意味がないためです。


1
また、進ツリーでは機能しない1種類のトラバーサルは順序どおりです。奇数の子を持つノードの順序トラバーサルに相当する意味のあるものはありません。
アダムR.ネルソン

@DW臭いはどうですか?それも回答に含めてください。
Renae Lider 2015

@ AdamR.Nelson 2以外の偶数に対してどのように機能しますか?バイナリの場合は、Left-Root-Rightです。たとえば、四分木でどのように機能するかわかりません。
Renae Lider 2015

@RenaeLider(左から右に)A、B、C、およびDという名前の子が与えられた場合、AB-Root-CDをトラバースすることにより、クワッドツリーの順序トラバーサルに似た何かを実行できます。しかし、これの有用なアプリケーションはないと思います。
アダムR.ネルソン

2
@ AdamR.Nelson 最初の子の後に親を訪問し、次に他の子を訪問すると言って、一般的なケースの順序を定義できます。あまり意味がないかもしれませんが、可能です。
ラファエル

0

CS全体で多くの異質なデータ構造が使用されています。による順序付けされた方法でn進ツリーをトラバースすることについて、同様の最近の質問(現在は削除済み)がありましたoverexchange。研究された文献のほとんどまたは多くのn分木は順序付けられていない傾向があるようです。ただし、他の詳細な回答の別のpov /例外/「エッジ」のケースとして、「奇数で不自然ではなく、実際にはあまり役立たない」順序付けられたn進ツリーのケースがあります。ここに1つの参照があります。他にも多くのケースが考えられますが、広範囲に使用されていない可能性もあります。

[1] n-ary ordered trees / P Mateti 7140コースノート


順序付けられたn進ツリーを考えるもう1つの方法は、エッジにラベルが付けられ、トラバーサルのアルゴリズムにアクセスできる順序を持つことです。
vzn '25

順序付けられた多項ツリーの挿入/更新手順について明確ではありません。コードを共有できますか?
16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.