对称的二叉树Python
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路:由题目可以知道对称二叉树是指除了根节点运行左子树与右子树是对称的
即左子树的左节点与右子树的右节点相等,左子树的右节点与右子树的左节点相等
我们首先判断特殊情况,当根节点为空,我们可以直接返回True,这时候是对称的
不为空的时候,只要我们重新定义一个函数,判断左右子树,
当两个子树为空的时候,直接返回True,这时候肯定是对称的
再判断返回False的情况:两个子树有一个为空就要返回False,当然左右子树的值不相等也要返回False
接下来,我们利用递归的思想,将左子树的左边和右子树的右边做为函数的输入,进行判断,不断递归,同理将左子树的右边和右子树的左边作为输出同时返回结果
# -*- 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 def is_s(A,B): if not A and not B: return True if not A or not B or A.val != B.val: return False return is_s(A.left,B.right) and is_s(A.right,B.left) return is_s(pRoot.left,pRoot.right)