一、题目描述
给定一个二叉树,检查它是否是镜像对称的。
二、代码实现
方法一:递归
对称的树的左子树和右子树满足以下条件:
- 如果左子树和右子树均为空,则该树对称;
- 如果左子树或右子树只有一个为空,则该树不对称;
- 如果左子树和右子树均不为空,当左子树的左子树和右子树的右子树镜像对称,且左子树的右子树和右子树的左子树镜像对称时,该树对称;
# 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
"""
return self.isMirror(root, root)
def isMirror(self, p, q):
if p == None and q == None: return True
elif p == None or q == None: return False
else:
return p.val == q.val and self.isMirror(p.left, q.right) and self.isMirror(p.right, q.left)
网友评论