安全性を証明するoffer18分析するバイナリのサブツリーではありません

パブリッククラスTest {
パブリック静的
ブールaHasB(BツリーA、BツリーB){
(B場合ヌル)trueを返す; //は逆の順序にすることはできません
(場合
ヌル)はfalseを返します。
(!A.data = B.data)がfalseを返す場合は、
aHasB(A.left、B.left)&& aHasB(A.right、B.right)を返します。
}
パブリック静的ブールhasSubTree(BツリーA、BツリーB){
ブールRES = FALSE;
(!= NULL && B = NULL){場合
(A.data == B.data)であれば{
RES = aHasB(A、B)。
}
もし{(RES!)
RES = hasSubTree(A.left、B)。
}
もし{(RES!)
RES = hasSubTree(A.right、B)。
}
}
RESを返します。
}
パブリック静的無効メイン(文字列[] args){
BツリーA1 =新しいBツリー(1)。
BツリーA2 =新しいBツリー(2);
BツリーA3 =新しいBツリー(3)。
BツリーA4 =新しいBツリー(4)。
BツリーA5 =新しいBツリー(5)。
A1.left = A2。
= A3 A1.right。
A2.left = A4;
A2.right = A5;
BツリーB1 =新しいBツリー(1)。
BツリーB2 =新しいBツリー(2)。
BツリーB3 =新しいBツリー(3)。
BツリーB4 =新しいBツリー(4)。
B1.left = B2。
B1.right = B3。
B2.left = B4。
System.out.println(hasSubTree(A1、B1))。
}
}
クラスBツリー{
intデータ。
Bツリーは左。
右Bツリー;
Bツリー(INT X){
データ= xと;
}
}

おすすめ

転載: blog.csdn.net/qq_33391981/article/details/91953585