# 101-symmetric-tree Try it on leetcode ## Description

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:

 

Follow up: Could you solve it both recursively and iteratively?
## Solution(Python) ```Python # 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: return self.iterative(root) # Time Complexity: O(n) # Space Complexity: O(h) def recursive(self, root1, root2=None): if root1 is None and root2 is None: return True if root1 is not None and root2 is not None: if root1.val == root2.val: return self.recursive(root1.left, root2.right) and self.recursive( root1.right, root2.left ) return False # Time Complexity: O(n) # Space Complexity: O(n) def iterative(self, root): q = deque([]) q.append(root) q.append(root) while q: original_node = q.popleft() mirrored_node = q.popleft() if original_node.val != mirrored_node.val: return False if original_node.left and mirrored_node.right: q.append(original_node.left) q.append(mirrored_node.right) elif original_node.left or mirrored_node.right: return False if original_node.right and mirrored_node.left: q.append(original_node.right) q.append(mirrored_node.left) elif original_node.right or mirrored_node.left: return False return True ```