题目描述:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following [1,2,2,null,3,null,3]
is not:
1 / \ 2 2 \ \ 3 3
解题思路:
判断是否是一个对称树,简单,采用Divide And Conquer的方法去做,把大的问题不断分成小问题取解决。
Python代码:
class Solution:
def isSymmetric(self, root: 'TreeNode') -> 'bool':
if not root:
return True
return self.isMirror(root.left, root.right)
def isMirror(self, left, right):
if left == None and right == None:
return True
elif left != None and right != None:
if left.val == right.val:
return self.isMirror(left.left, right.right) and self.isMirror(left.right, right.left)
else:
return False
else:
return False
这里在做题的时候,遇到了个小问题,python中的&是按位与,优先级比==, !=要高,而and是逻辑与,比==要低,因此在使用&时,&两边的不等式判断要加括号,而and则不需要。