题目很简单,其实就是利用递归,判断左右子树是否相等。
将根节点的左子树记做left,右子树记做right。比较 left.val是否等于 right.val,不等的话直接返回就可以了。
如果相当,递归比较 left 的左节点和 right 的右节点,再递归比较 left 的右节点和 right 的左节点。
代码如下:
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def equal_tree(left_node, right_node):
if (left_node.val != right_node.val) or (left_node and not right_node ) or (not left_node and right_node):
return False
if not left_node and not right_node:
return True
return equal_tree(left_node.left, right_node.right) and equal_tree(left_node.right, right_node.left)
return equal_tree(root.left, root.right)
非递归的方法可以用迭代,队列存储并比较,入队的子树顺序要注意,此处不再展开。