题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题思路
- 递归
对称二叉树,也就是说当前节点的左右节点的左右分支也都必须是对称的。
递归比较左右节点,然后对左右节点的左右分支进一步递归比较
# -*- 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 not pRoot:
return True
return self.compare(pRoot.left, pRoot.right)
def compare(self, pR1, pR2):
if not pR1 and not pR2:
return True
if not pR1 or not pR2:
return False
if pR1.val == pR2.val:
return self.compare(pR1.left, pR2.right) and self.compare(pR1.right, pR2.left)
return False