题目描述:
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题思路:
采用递归算法,只要pRoot.left和pRoot.right是否对称即可,即 :
(1) 左右节点的值相等;
(2) 对称子树left.left与right.right,left.rigth与right.left也对称相等。
代码实现:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetrical(self,pRoot):
if pRoot == None:
return True
def isMirror(left,right):
if left == None and right == None:
return True
if left == None or right == None:
return False
if left.val != right.val:
return False
ret1 = isMirror(left.left,right.right)
ret2 = isMirror(left.right,right.left)
return ret1 and ret2
return isMirror(pRoot.left,pRoot.right)