二分木 T2 が二分木 T1 のサブツリーであるかどうかを調べたい。T2 と T1 の文字列表現は、事前順序および順序どおりのトラバーサルを使用して作成できることを読みました。T2 文字列が T1 文字列の部分文字列である場合、T2 は T1 の部分木です。
私はこの方法に少し混乱しており、その正しさについて確信が持てません。
ウィキから: 「ツリー T のサブツリーは、T のノードと T のすべての子孫で構成されるツリーです。」
次の例では:
T2:
1
/ \
2 3
T1:
1
/ \
2 3
\
4
T2 と T1 の文字列を作成すると、次のようになります。
preorder T2: "1,2,3"
preorder T1: "1,2,3,4"
inorder T2: "2,1,3"
inorder T1: "2,1,3,4"
T2 文字列は T1 の部分文字列であるため、上記の部分文字列一致方法を使用すると、T2 は T1 の部分木であると結論付ける必要があります。
ただし、定義上、T2 は T1 のサブツリーであってはなりません。これは、T1 のルート ノードの子孫がすべて含まれているわけではないためです。
ここに関連する議論があり、方法が正しいと結論づけているようです。
ここで何か不足していますか?