タイトル説明
二つのバイナリ入力A、Bは、BはAさんを下部ではないと判断されます。(詩:私たちは、空のツリーは任意のサブ構造ツリーではありません同意しました)
考え
ツリーのルートノードに等しいBの値を見つけるために、最初のツリーを横断、判定がサブツリーを見つけることではありません。
判決は、再帰的な方法は、ルートノードが決定されたときにサブツリーではない、その後、左の子と右の子を決定します。
コード
#- * -コーディング:UTF-8 - * - #のクラスのTreeNode: # デフ__init __(自己、X): # self.val = X # self.left =なし #1 self.right =なし クラスソリューション: DEF HasSubtree(自己、pRoot1、pRoot2は): #のここでの書き込みコードが 結果= Falseの 場合 pRoot1 とpRoot2: もし pRoot1.val == pRoot2.val: 結果 = self.isSubtree(pRoot1、pRoot2) 場合 ではない結果とpRoot1.left: 結果 = self.isSubtree(pRoot1.left、pRoot2) なら ない結果とpRoot2.right: 結果 = self.isSubtree(pRoot1.right、pRoot2) リターン結果 DEF isSubtree(自己、P1、P2): もし ありませんP2: 返さ真の 場合 ではないP1: 返すFalseの 場合 p1.val =!p2.val: 返す偽 check_left = self.isSubtree(p1.left、p2.left) check_right= self.isSubtree(p1.right、p2.right) リターン check_left とcheck_right