leetcode第101题,判断一棵二叉树是不是镜像对称的,一开始的思路是先用广搜遍历出来树的节点,然后按照层的数目进行分割,逐层判断,但是这样做过于麻烦了,之后看到了一个很好的广搜方法,以左右两边为状态进行深度搜索,这个方法非常巧妙,确实不容易想到。
# 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 dfs(left,right):
if left == None and right == None:
return True
elif left == None or right == None:
return False
if left.val != right.val:
return False
return dfs(left.left,right.right) and dfs(left.right,right.left)
if root == None:
return True
else:
return dfs(root.left,root.right)