2つの異なるツリーの予約注文トラバーサルは、たとえ異なっていても同じですか?


11

この質問は、それらが可能であることをかなり説明していますが、同じプレオーダートラバーサルを持つ2つの異なるツリーがある例は示していません。

また、構造的には異なりますが、2つの異なるツリーの順序トラバーサルは同じでもかまいません。この例はありますか?


2
これは非常に初級レベルの演習です。何を試しましたか、どこで行き詰まりましたか?
ラファエル

回答:


28

ツリーの例(画像)

     A:                 B:
     ‾‾                 ‾‾
     1                  1
    /                  / \
   2                  2   3
  /  
 3   

これはシナリオに適合する例です。ツリーAのルートの値は1で、左の子には値2があり、左の子には左の子にも値3があります。

ツリーBのルートの値は1で、左の子は値2、右の子は値3です。

どちらの場合も、プレオーダー走査は1-> 2-> 3です。


11
これは実際、一般的な規則の特定のケースであり、ある順序のツリーには、同じ順序を持つ左(または右のみ)の子のみの線形ツリーがあります。
Dancrumb

5
@Dancrumbこれは、N個のノードを持つすべてのツリー、およびN個のノードを持つすべてのツリー形状(=ラベルなしツリー)に対して、トラバースを共有するように後者にラベルを付ける方法があるという一般的なルールの特定のケースです。前者。これは、すべてのトラバーサル(事前/事後/順序どおりの訪問)に当てはまります。
カイ

8

nn1,2,,n

つまり、任意のバイナリツリー構造のノードに名前を付けて、別のツリーと同じプレオーダーシーケンスを生成できます。

ツリーの他のプロパティを仮定する必要がある場合、これは機能しません。たとえば、ツリーがすべてのキーが異なる二分探索ツリーであると想定されている場合、その事前順序シーケンスはツリーを一意に決定します。


8

カウンティング引数

のラベルなしバイナリツリーの数 nnthCn=(2n)!/(n!(n+1)!).

    o         o         o         o         o
   /         /         / \         \         \
  o         o         o   o         o         o      .
 /           \                     /           \
o             o                   o             o

n!

(2n)!(n+1)!=2n(2n1)(n+2).

n!nn!Cn>1n>1.n


1

2番目の質問に関しては、はい、構造的に異なる2つのツリーが同じ順序のトラバーサルを持つ可能性があります。そのような例の1つは次のとおりです。

     A:                 B:

     1                  2
    / \                  \
   2   3                  1
                           \
                            3

両方のツリーの順序トラバーサルは同じです。2-> 1-> 3

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.