题目要求
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
解题思路
递归
每次递归需要判断如下三个:
- l.val == r.val
- recursive(l.left, r.right)
- recursive(l.right, r.left)
# 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: TreeNode
"""
def recursive(l, r):
if not l and not r:
return True
elif not l and r:
return False
elif l and not r:
return False
elif l.val != r.val:
return False
return recursive(l.left, r.right) and recursive(l.right, r.left)
# 若为空,直接返回True
if not root:
return True
return recursive(root.left, root.right)