Symmetric Tree

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

 

Follow up: Could you solve it both recursively and iteratively?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 isMirror(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
        if not p or not q:
            if p or q:
                return False
            return True
        if p.val == q.val and self.isMirror(p.left, q.right) and self.isMirror(p.right, q.left):
            return True
    
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        if root:
            return self.isMirror(root.left, root.right)
        return True

Comments

Popular posts from this blog

Minimum Number of Operations to Move All Balls to Each Box

Efficient Generation of Nth Row of Binomial Coefficient Modulo M

Lazy Deletion in Heap: A Wrapper for Python heapq