Bird
Raised Fist0
DSA Pythonprogramming~5 mins

Check if Two Trees are Symmetric in DSA Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean for two binary trees to be symmetric?
Two binary trees are symmetric if one is the mirror image of the other. This means the left subtree of one tree is the mirror of the right subtree of the other tree, and vice versa.
Click to reveal answer
beginner
What is the base case when checking if two trees are symmetric?
If both trees are empty (None), they are symmetric. If only one is empty, they are not symmetric.
Click to reveal answer
intermediate
How do you compare nodes when checking for symmetry?
Compare the values of the current nodes. Then recursively check if the left child of the first tree is symmetric with the right child of the second tree, and the right child of the first tree is symmetric with the left child of the second tree.
Click to reveal answer
intermediate
Why is recursion useful for checking tree symmetry?
Recursion naturally explores the tree structure by comparing corresponding nodes and their children, making it easy to check mirror conditions at every level.
Click to reveal answer
intermediate
What is the time complexity of checking if two trees are symmetric?
The time complexity is O(n), where n is the number of nodes in the trees, because each node is visited once during the comparison.
Click to reveal answer
What should you check first when comparing two trees for symmetry?
AIf the root values are equal
BIf the trees have the same height
CIf the left child of one equals the left child of the other
DIf both nodes are None
When checking symmetry, which pairs of nodes do you compare recursively?
ALeft child of first tree with left child of second tree
BLeft child of first tree with right child of second tree
CRight child of first tree with right child of second tree
DRoot nodes only
If one node is None and the other is not, what does it mean for symmetry?
ACheck children nodes
BTrees are symmetric
CTrees are not symmetric
DIgnore and continue
What is the main idea behind the recursive function to check symmetry?
ACompare nodes and their mirror children
BCheck if trees have the same number of nodes
CCalculate tree height
DTraverse both trees in the same order
What data structure is typically used to represent the trees in this problem?
ABinary tree nodes with left and right pointers
BLinked list
CArray
DStack
Explain how you would check if two binary trees are symmetric using recursion.
Think about mirror image and how children nodes relate.
You got /5 concepts.
    Describe the time complexity and why it is that way when checking if two trees are symmetric.
    Consider how many nodes you compare during the process.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does it mean for two binary trees to be symmetric?
      easy
      A. They are mirror images of each other around their center.
      B. They have the same number of nodes.
      C. They have the same root value only.
      D. They have identical left subtrees only.

      Solution

      1. Step 1: Understand symmetry in trees

        Two trees are symmetric if one is the mirror reflection of the other around the center.
      2. Step 2: Compare structure and node values

        Both structure and node values must match in a mirrored way for symmetry.
      3. Final Answer:

        They are mirror images of each other around their center. -> Option A
      4. Quick Check:

        Symmetry means mirror image = A [OK]
      Hint: Symmetric trees mirror each other exactly [OK]
      Common Mistakes:
      • Thinking same number of nodes means symmetric
      • Ignoring node values in comparison
      • Checking only left or right subtree
      2. Which of the following Python function signatures is correct to check if two trees are symmetric?
      easy
      A. def is_symmetric(tree1, tree2)
      B. def is_symmetric(tree1 tree2):
      C. def is_symmetric(tree1, tree2) -> bool:
      D. def is_symmetric(tree1, tree2): return True

      Solution

      1. Step 1: Check syntax for function definition

        Python functions require parentheses around parameters and a colon at the end.
      2. Step 2: Identify correct type hint usage

        def is_symmetric(tree1, tree2) -> bool: uses correct syntax with type hint and colon, making it valid and clear.
      3. Final Answer:

        def is_symmetric(tree1, tree2) -> bool: -> Option C
      4. Quick Check:

        Correct Python function syntax with type hint = D [OK]
      Hint: Use parentheses and colon; type hints are optional but clear [OK]
      Common Mistakes:
      • Missing comma between parameters
      • Omitting colon at function end
      • Incorrect parameter syntax without parentheses
      3. What will be the output of the following code snippet?
      class Node:
          def __init__(self, val):
              self.val = val
              self.left = None
              self.right = None
      
      def is_mirror(t1, t2):
          if not t1 and not t2:
              return True
          if not t1 or not t2:
              return False
          return (t1.val == t2.val) and is_mirror(t1.left, t2.right) and is_mirror(t1.right, t2.left)
      
      root1 = Node(1)
      root1.left = Node(2)
      root1.right = Node(3)
      
      root2 = Node(1)
      root2.left = Node(3)
      root2.right = Node(2)
      
      print(is_mirror(root1, root2))
      medium
      A. True
      B. False
      C. None
      D. Error

      Solution

      1. Step 1: Check base cases for empty nodes

        Both trees have root 1, and their left and right children are swapped but equal in value.
      2. Step 2: Recursively verify mirror condition

        Left of root1 (2) matches right of root2 (2), and right of root1 (3) matches left of root2 (3), so all conditions return True.
      3. Final Answer:

        True -> Option A
      4. Quick Check:

        Mirror check returns True for swapped children = A [OK]
      Hint: Mirror means left of one equals right of other [OK]
      Common Mistakes:
      • Confusing left and right children in recursion
      • Ignoring base cases for None nodes
      • Assuming same structure means symmetric
      4. Identify the error in this code snippet that checks if two trees are symmetric:
      def is_symmetric(t1, t2):
          if t1 is None and t2 is None:
              return True
          if t1 is None or t2 is None:
              return False
          if t1.val != t2.val:
              return False
          return is_symmetric(t1.left, t2.left) and is_symmetric(t1.right, t2.right)
      medium
      A. It does not check for None nodes.
      B. It compares left with left and right with right instead of mirror sides.
      C. It returns True too early without checking values.
      D. It uses 'is' instead of '==' for value comparison.

      Solution

      1. Step 1: Analyze recursive calls for symmetry

        The function compares left subtree of t1 with left subtree of t2 and right with right, which is incorrect for mirror symmetry.
      2. Step 2: Correct mirror comparison

        It should compare left of t1 with right of t2 and right of t1 with left of t2 to check mirror symmetry properly.
      3. Final Answer:

        It compares left with left and right with right instead of mirror sides. -> Option B
      4. Quick Check:

        Mirror check requires cross comparison = B [OK]
      Hint: Mirror means cross compare left with right [OK]
      Common Mistakes:
      • Comparing same sides instead of mirror sides
      • Confusing 'is' and '==' for values
      • Missing base cases for None nodes
      5. Given two binary trees, write a function to check if they are symmetric considering that one tree might be None. Which approach correctly handles this edge case?
      hard
      A. Return False immediately if either tree is None.
      B. Ignore None checks and compare node values only.
      C. Only compare root values and ignore subtrees.
      D. Return True if both trees are None, else check mirror recursively.

      Solution

      1. Step 1: Handle None edge cases carefully

        If both trees are None, they are symmetric by definition, so return True.
      2. Step 2: Recursively check mirror symmetry

        If only one is None, return False. Otherwise, compare root values and recursively check left of one with right of other and vice versa.
      3. Final Answer:

        Return True if both trees are None, else check mirror recursively. -> Option D
      4. Quick Check:

        Both None means symmetric, else recurse mirror check = C [OK]
      Hint: Both None means symmetric; one None means not symmetric [OK]
      Common Mistakes:
      • Returning False if either tree is None without checking both
      • Skipping recursive mirror checks
      • Comparing only root values
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard