题目
给你一个二叉树的根节点 root , 检查它是否轴对称。
例:
输入:root = [1,2,2,3,4,4,3]
输出:true
方法:递归
判断二叉树是否轴对称即判断根节点的左右子树是否通过翻转一方可以得到另一方
比较部分:
- 首先判断是否存在空结点。若左子树的左孩子与右子树的右孩子其中之一为空,那么该二叉树一定不为轴对称;若均为空,那么此部分是轴对称的
- 其次判断值是否相等。若左子树的左孩子的值与右子树的右孩子的值不相等,那么该二叉树一定不为轴对称
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def isSymmetric(self, root):
if root == None:
return True
return self.compare(root.left, root.right)
def compare(self, left, right):
if left == None and right != None:
return False
elif left != None and right == None:
return False
elif left == None and right == None:
return True
elif left.val != right.val:
return False
outside = self.compare(left.left, right.right)
inside = self.compare(left.right, right.left)
return outside and inside
参考
代码相关:https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html