题目:https://www.nowcoder.com/ta/coding-interviews

请实现一个函数,用来判断一颗二叉树是不是对称的。如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

简单的考虑是:

1.比较树的根节点是否存在

2.根节点存在,则比较root.left?==root.right

3.若2成立,则针对两颗子树,判断 root1.left?==root2.right & root1.right?==root2.left,并不断重复这个过程

利用递归设计2-3(返回True或者False),在判断方法中调用

1
2
3
4
5
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def isSymmetrical(self, pRoot):
if not pRoot:
return True
return self.isSymmetricalTree(pRoot.left, pRoot.right)
def isSymmetricalTree(self,root1,root2):
if not root1 and not root2:
return True
if not root1 or not root2:
return False
if root1.val == root2.val:
return self.isSymmetricalTree(root1.left,root2.right) and self.isSymmetricalTree(root1.right,root2.left)
else:
return False

参考:https://blog.csdn.net/u014568072/article/details/87913092

1
2