Leetcode 101

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

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

    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1
   / \
  2   2
   \   \
   3    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
        """
        
        def isSame(left, right):
            if left is None and right is None:
                return True
            if left and right and left.val == right.val:
                return isSame(left.left, right.right) and isSame(left.right, right.left)
            else:
                return False
        
        if root is None:
            return True
        else:
            return isSame(root.left, root.right)

猜你喜欢

转载自blog.csdn.net/jhlovetll/article/details/84191986