题目:
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
Note:
Bonus points if you could solve it both recursively and iteratively.
代码+调试:
# 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 doubleRoot(self,p,q):
if p==q==None:
return True
if q and p and p.val==q.val:
return self.doubleRoot(p.left,q.right) and self.doubleRoot(p.right,q.left)
return False
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
return self.doubleRoot(root,root)
if __name__ == '__main__':
l1_1 = TreeNode(1)
l1_2 = TreeNode(2)
l1_3 = TreeNode(3)
l1_1.left = l1_2
l1_1.right = l1_3
l3 = Solution().isSymmetric(l1_1)
print l3