题目链接
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.
python代码递归实现:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root is None:
return True
return self.helper(root.left, root.right)
def helper(self, p, q):
if p is None and q is None:
return True
if p and q and p.val == q.val:
#左节点的左子树和右节点的右子树对称
#左节点的右子树和右节点的左子树对称
return self.helper(p.left, q.right) and self.helper(p.right, q.left)
return False
解题思路:
每一个结点的左右孩子都一样,采用递归的思想