leetcode题解

【Leetcode】101—Symmetric Tree

2019-07-14  本文已影响0人  Gaoyt__
一、题目描述

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

二、代码实现
方法一:递归

对称的树的左子树和右子树满足以下条件:

  1. 如果左子树和右子树均为空,则该树对称;
  2. 如果左子树或右子树只有一个为空,则该树不对称;
  3. 如果左子树和右子树均不为空,当左子树的左子树和右子树的右子树镜像对称,且左子树的右子树和右子树的左子树镜像对称时,该树对称;
# 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)
上一篇下一篇

猜你喜欢

热点阅读