美文网首页
LeetCode-python 101.对称二叉树

LeetCode-python 101.对称二叉树

作者: wzNote | 来源:发表于2019-08-29 18:55 被阅读0次

    题目链接
    难度:简单       类型: 二叉树


    给定一个二叉树,检查它是否是镜像对称的。

    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

        1
       / \
      2   2
     / \ / \
    3  4 4  3
    

    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

        1
       / \
      2   2
       \   \
       3    3
    

    解题思路


    将该问题转化为根节点的左子树和右子树是否是镜像对称的

    两个树互为镜像的条件是:

    1. 它们的根节点具有相同的值
    2. 每个树的左子树都与另一个树的右子树镜像对称

    代码实现

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def isSymmetric(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            def is_mirror(left, right):
                if not left and not right:
                    return True
                if not left or not right:
                    return False
                
                return left.val==right.val and is_mirror(left.left, right.right) and is_mirror(left.right, right.left)
            return not root or is_mirror(root.left, root.right)
    

    本文链接:https://www.jianshu.com/p/7f83c9f8b865

    相关文章

      网友评论

          本文标题:LeetCode-python 101.对称二叉树

          本文链接:https://www.haomeiwen.com/subject/mngrectx.html