Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
Example 1:

Input: root = [1,2,2,3,4,4,3] Output: true
Example 2:

Input: root = [1,2,2,null,3,null,3] Output: false
Constraints:
- The number of nodes in the tree is in the range
[1, 1000]. -100 <= Node.val <= 100
My Solution:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def isSymmetric(self, root: Optional[TreeNode]) -> bool: if root.left is None and root.right is None: return True elif root.left is None or root.right is None: return False elif root.left.val != root.right.val: return False def invertTree(root: Optional[TreeNode]) -> Optional[TreeNode]: if root is None or root.left is None and root.right is None: return root root.left, root.right = invertTree(root.right), invertTree(root.left) return root def isSameTree(p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: if p is None and q is None: return True if p is None or q is None: return False if p.val != q.val: return False if not isSameTree(p.left, q.left) or not isSameTree(p.right, q.right): return False return True return isSameTree(root.left, invertTree(root.right))


浙公网安备 33010602011771号