题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解体思路:
递归查询判断
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetrical(self, pRoot):
# write code here
#空树为对称二叉树
if pRoot == None:
return True
return self.Check(pRoot.left, pRoot.right)
#定义回归,判断左右子树知否对称
def Check(self,L,R):
#如果左右子树均为空,则说明对称
if L == None and R == None:
return True
#如果左右子树有不为空,则说明不对称
if L==None or R == None:
return False
#还有一种情况就是左右子树均不为空,则判断值是否相同
if L.val == R.val:
return self.Check(L.left, R.right) and self.Check(L.right, R.left)
#其他情况返回False
return False