文章目录
- 题目
- 题目详情
- 示例
- 说明
- 解题代码
- 代码
- 运行结果
- 体会
题目
题目详情
给定一个二叉树,检查它是否是镜像对称的。
示例
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1/ \2 2/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1/ \2 2\ \3 3
说明
如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
解题代码
代码
class Solution(object): def __init__(self):self.isSym = Truedef isSymmetric(self, root):if root == None:return Trueif root.left == None and root.right == None:return Trueif root.left == None or root.right == None:return Falseself.preRecur(root.left,root.right)return self.isSymdef preRecur(self,tree1,tree2):if tree1.val != tree2.val:self.isSym = Falsereturnelse:if tree1.left != None and tree2.right != None:self.preRecur(tree1.left,tree2.right)elif tree1.left == None and tree2.right == None:passelse:self.isSym = Falsereturn if tree1.right != None and tree2.left != None:self.preRecur(tree1.right,tree2.left)elif tree1.right == None and tree2.left == None:passelse:self.isSym = Falsereturn
运行结果
体会
这个是一道比较简单的二叉树的算法题,但是对于自己来说还是有一定的困难的,对二叉树的性质方面有所欠缺,相信在练习与理解后会有很大的提升。