LeetCode-python 101.对称二叉树

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


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

例如,二叉树 [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.对称二叉树)