解题思路
空树是对称的
只有一个节点也是对称的
如果左子树和右子树是镜像,整棵树是对称的
两棵树是镜像,就是
1.根节点值一样
2.左树的左子树是右树的右子树的镜像
3.左树的右子树是右树的左子树的镜像
三者都成立才是
代码
101. 对称二叉树
# 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 not root:
return True
return mirror(root.left, root.right)
def mirror(x, y):
if not x and not y:
return True
elif not x or not y:
return False
else: # x and y
return x.val == y.val and mirror(x.left, y.right) and mirror(x.right, y.left)