対称バイナリツリー101

タイトル:バイナリーツリー、それは鏡面対称であるかどうかを確認考えます。例えば、バイナリツリーは  [1,2,2,3,4,4,3]対称です。

出典:https://leetcode-cn.com/problems/symmetric-tree/

1幕:独自のコード

アイデア:スタックリアライズ、実際には、キューの実装にもOK、あまり違い、再帰と公式コードです

バイナリツリーノードの定義A。
クラスのTreeNode:
     DEF  __init__ (セルフ、X):
        self.val = X 
        self.left = なし
        self.right = なし
 #は44ミリ秒、すべてのビート提出のpython3の82.50パーセント:実行ユーザー
#のメモリ消費量:12.9メガバイトには、すべてのpython3の提出にユーザーの99.02パーセントを破った
クラスのソリューション:
     DEF isSymmetric(セルフ、ルート:ツリーノード) - > BOOL:
         DEF (P-、Q)judge_symmetric:
             IF P-はありませんなし Q ありませんなし:
                リターン 2
             ELIFの pがあるなしまたは qがありませんなし(!p.val = q.val):
                 リターンリターン真の
         場合はルートがあるなし:
             リターン真の
        スタック = [] 
        stack.append((root.left、ルート。右))
        一方、スタック:
            P、Q = stack.pop()
            RES = judge_symmetric(P、Q)
            1を返すことができないという注意は、真である真== 1 
            IF == RES 2 パス
            のelif RES:
                stack.append((p.left、q.right))
                stack.append((p.right、q.left) )
            それ以外リターンリターンIF  __name__ == ' __main__ ' 
    duixiang = ソリューション()
    ルート。=のTreeNode(1 
    A =のTreeNode(2 
    B =のTreeNode(2 
    root.left = A 
    root.right= B 
    a.left =ツリーノード(4 
    a.right =ツリーノード(3 
    b.left =ツリーノード(4 
    b.right =ツリーノード(3 
    A = duixiang.isSymmetric(ルート)
     プリント()
コードの表示

 

おすすめ

転載: www.cnblogs.com/xxswkl/p/11988888.html