题目描述
给定一个二叉树,检查它是否是镜像对称的。
例子:
二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
解题思路1
使用递归的思路解决,比较二叉树的对称性,首先就是比较根节点的左孩子和右孩子是否相等,接着如果将左孩子称为left,右孩子称为right,就是要比较left.left和right.right是否相等以及left.right和right.left是否相等,接着进行同样的操作,将跟节点的左右子树的对称点分别称为left和right,那么我们依然在比较left.left和right.right是否相等以及left.right和right.left是否相等,这样就形成了一个递归比较。而递归终止的条件是,比较的两个节点都为空,或者一个为空一个不为空,或者两个节点的值不相等,否则会继续比较下去。
pyhton 实现
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return True
def dfs(left, right):
if not left and not right:
return True
if (not left) or (not right):
return False
if left.val != right.val:
return False
return dfs(left.left, right.right) and dfs(left.right, right.left)
return dfs(root.left, root.right)