101. 对称二叉树

发布时间 2023-11-04 15:21:24作者: Frommoon

题目

  • 给你一个二叉树的根节点 root , 检查它是否轴对称。

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

题解、前序遍历+递归

  • 不仅要判断节点带值的情况,还要考虑空节点位置是否相同
class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        def isMirror(node1: Optional[TreeNode], node2: Optional[TreeNode]) -> bool:#定义一个接收两个参数的函数
            if node1 is None and node2 is None:  # 两个节点都为空,它们是对称的
                return True
            if node1 is None or node2 is None:  # 一个节点为空,它们不是对称的
                return False
            return (
                node1.val == node2.val and 
                isMirror(node1.left, node2.right) and #递归左子树
                isMirror(node1.right, node2.left)     #递归右子树
            )
        
        if root is None:
            return True
        return isMirror(root.left, root.right)#传入两个参数