题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路
树的问题通常可以用递归解决。
这道题其实就是从上到下比较左右节点,能顺利比到最后的叶子节点就返回正确,中间匹配到不相等的值就返回错误。
代码
class Solution:
def isSymmetrical(self, pRoot):
# write code here
p1 = pRoot
p2 = pRoot
flag = self.isMirror(p1,p2)
return flag
def isMirror(self,p1,p2):
if p1 == None and p2 == None:
return True
if p1 == None or p2 == None:
return False
if p1.val != p2.val:
return False
flag1 = self.isMirror(p1.left,p2.right)
flag2 = self.isMirror(p1.right,p2.left)
return flag1 and flag2