031-力扣刷题-101--对称二叉树

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

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

image.png

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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
        """
        if root is None:  #如果输入的树是空的那么一定是对称的
            return True 
        else:
            return self.isSymmetricRecu(root.left,root.right)
    def isSymmetricRecu(self,left,right):
        if left is None and right is None:
            #如果说这两个节点都是空说明一定是会对称的就是最后一层的叶子节点这里判断的时候
            return True 
        if left is  None or right is  None  or left.val !=right.val:
            return False                #这里的意思是只有一边有一边没有,或者两个都有的情况下值不一样就全部返回False
        else:
            return self.isSymmetricRecu(left.left,right.right) and self.isSymmetricRecu(left.right,right.left)   #当这一层的对称条件都满足的时候就继续向下判断是不是满足对称条件,直到叶子叶子结点全部满足对称的条件

image.png