题目
题目详情
给定一个二叉树,检查它是否是镜像对称的。
示例
例如,二叉树 [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 = True
def isSymmetric(self, root):
if root == None:
return True
if root.left == None and root.right == None:
return True
if root.left == None or root.right == None:
return False
self.preRecur(root.left,root.right)
return self.isSym
def preRecur(self,tree1,tree2):
if tree1.val != tree2.val:
self.isSym = False
return
else:
if tree1.left != None and tree2.right != None:
self.preRecur(tree1.left,tree2.right)
elif tree1.left == None and tree2.right == None:
pass
else:
self.isSym = False
return
if tree1.right != None and tree2.left != None:
self.preRecur(tree1.right,tree2.left)
elif tree1.right == None and tree2.left == None:
pass
else:
self.isSym = False
return
运行结果
体会
这个是一道比较简单的二叉树的算法题,但是对于自己来说还是有一定的困难的,对二叉树的性质方面有所欠缺,相信在练习与理解后会有很大的提升。