部分構造ツリーPythonのオファーは安全性を証明するために

タイトル説明

二つのバイナリ入力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
    

 

おすすめ

転載: www.cnblogs.com/wangzhihang/p/11790889.html