Easy
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:
[1, 1000]
.-100 <= Node.val <= 100
Follow up: Could you solve it both recursively and iteratively?
To solve the “Symmetric Tree” problem in Python with the Solution class, follow these steps:
isSymmetric
in the Solution
class that takes the root of a binary tree as input and returns true if the tree is symmetric, and false otherwise.isMirror
that takes two tree nodes as input parameters.isMirror
method, recursively compare the left and right subtrees of the given nodes.isMirror
method with the root’s left and right children to check if the entire tree is symmetric.Here’s the implementation of the isSymmetric
method in 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: TreeNode) -> bool:
if root is None:
return True
return self.helper(root.left, root.right)
def helper(self, leftNode: TreeNode, rightNode: TreeNode) -> bool:
if leftNode is None or rightNode is None:
return leftNode is None and rightNode is None
if leftNode.val != rightNode.val:
return False
return self.helper(leftNode.left, rightNode.right) and self.helper(leftNode.right, rightNode.left)
This implementation recursively checks whether the given binary tree is symmetric around its center in O(n) time complexity, where n is the number of nodes in the tree.