Bird
Raised Fist0
DSA Pythonprogramming~5 mins

Mirror a Binary Tree in DSA Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean to mirror a binary tree?
Mirroring a binary tree means swapping the left and right children of every node in the tree, creating a mirror image of the original tree.
Click to reveal answer
beginner
What is the base case when recursively mirroring a binary tree?
The base case is when the current node is null (empty). In this case, we simply return because there is nothing to mirror.
Click to reveal answer
beginner
How do you swap the children of a node in a binary tree?
You temporarily store one child, assign the other child to its place, then assign the stored child to the other place. For example, swap left and right pointers.
Click to reveal answer
intermediate
Why is recursion a good approach to mirror a binary tree?
Because each node's children can be mirrored independently, recursion naturally handles the process by mirroring subtrees from bottom up.
Click to reveal answer
intermediate
What will be the output tree after mirroring this tree? 1 / \ 2 3 / \ 4 5
The mirrored tree will be: 1 / \ 3 2 / \ 5 4
Click to reveal answer
What is the first step in mirroring a binary tree node?
AAdd a new child
BDelete the node
CSwap the left and right children
DDo nothing
What happens when the mirror function reaches a null node?
AIt swaps children
BIt returns immediately
CIt creates a new node
DIt throws an error
Which traversal method is naturally used in mirroring a binary tree?
APreorder traversal
BLevel order traversal
CPostorder traversal
DInorder traversal
After mirroring, what happens to the left subtree of the original tree?
AIt stays the left subtree
BIt becomes the root
CIt is deleted
DIt becomes the right subtree
Which of these is NOT a correct step in mirroring a binary tree?
ADelete all leaf nodes
BRecursively mirror left subtree
CRecursively mirror right subtree
DSwap left and right children of the node
Explain how to mirror a binary tree using recursion.
Think about what happens at each node and how recursion helps.
You got /3 concepts.
    Draw or describe the mirrored version of a simple binary tree with root and two children.
    Visualize swapping the left and right branches.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does mirroring a binary tree mean?
      Mirror a Binary Tree means:
      easy
      A. Swapping the left and right children of every node
      B. Deleting all leaf nodes
      C. Reversing the values of nodes in each level
      D. Sorting the nodes in ascending order

      Solution

      1. Step 1: Understand the mirror operation

        Mirroring a binary tree means swapping the left and right children of every node in the tree.
      2. Step 2: Compare with other options

        Deleting leaves, reversing values, or sorting nodes are different operations and do not create a mirror image.
      3. Final Answer:

        Swapping the left and right children of every node -> Option A
      4. Quick Check:

        Mirror = Swap children [OK]
      Hint: Mirror means swap left and right children at all nodes [OK]
      Common Mistakes:
      • Thinking mirror means reversing node values only
      • Confusing mirror with tree traversal
      • Assuming mirror deletes nodes
      2. Which of the following is the correct Python function header to define a recursive mirror function for a binary tree node named root?
      easy
      A. def mirror(root):
      B. def mirror(root) -> int:
      C. def mirror(root) -> None:
      D. def mirror(root) -> str:

      Solution

      1. Step 1: Identify function purpose and return type

        The mirror function modifies the tree in place and returns nothing, so return type is None.
      2. Step 2: Check syntax correctness

        def mirror(root) -> None: uses correct Python syntax with type hint for no return value.
      3. Final Answer:

        def mirror(root) -> None: -> Option C
      4. Quick Check:

        Function returns nothing = None [OK]
      Hint: Mirror modifies tree, returns nothing, so use -> None [OK]
      Common Mistakes:
      • Using wrong return type like int or str
      • Omitting parentheses in function definition
      • Missing colon at end of function header
      3. What will be the output of the following code after calling mirror(root)? Assume the tree is:
      1
      / \
      2 3
      class Node:
          def __init__(self, val):
              self.val = val
              self.left = None
              self.right = None
      
      def mirror(root) -> None:
          if root is None:
              return
          root.left, root.right = root.right, root.left
          mirror(root.left)
          mirror(root.right)
      
      root = Node(1)
      root.left = Node(2)
      root.right = Node(3)
      mirror(root)
      print(root.left.val, root.right.val)
      medium
      A. 1 3
      B. 3 2
      C. 2 3
      D. 3 1

      Solution

      1. Step 1: Understand initial tree structure

        Root is 1, left child 2, right child 3.
      2. Step 2: Apply mirror function

        Mirror swaps left and right children at root, so left becomes 3 and right becomes 2.
      3. Final Answer:

        3 2 -> Option B
      4. Quick Check:

        Swapped children = 3 2 [OK]
      Hint: Mirror swaps children, so left=3 and right=2 after mirror [OK]
      Common Mistakes:
      • Not swapping children correctly
      • Printing values before mirror call
      • Confusing left and right child values
      4. Find the error in this mirror function code:
      def mirror(root):
          if root is None:
              return
          mirror(root.left)
          mirror(root.right)
          root.left = root.right
          root.right = root.left
      medium
      A. Swapping left and right children is done incorrectly
      B. Base case is missing
      C. Function does not call itself recursively
      D. No return statement in function

      Solution

      1. Step 1: Analyze swapping logic

        Assigning root.left = root.right then root.right = root.left sets both to same child, losing original left.
      2. Step 2: Correct swapping method

        Use simultaneous swap: root.left, root.right = root.right, root.left to avoid overwriting.
      3. Final Answer:

        Swapping left and right children is done incorrectly -> Option A
      4. Quick Check:

        Swap must be simultaneous to avoid overwrite [OK]
      Hint: Swap children simultaneously to avoid overwriting [OK]
      Common Mistakes:
      • Swapping children one by one causing data loss
      • Forgetting base case for recursion
      • Not swapping children at all
      5. Given a binary tree, write a function to check if the tree is symmetric (a mirror of itself). Which approach correctly uses the mirror concept?
      hard
      A. Traverse tree in preorder and compare with inorder traversal
      B. Check if left and right subtrees have the same number of nodes
      C. Check if all node values are equal in left and right subtrees
      D. Compare left subtree with right subtree by recursively checking if left.left matches right.right and left.right matches right.left

      Solution

      1. Step 1: Understand symmetry in binary trees

        A symmetric tree is a mirror of itself, so left subtree must mirror right subtree.
      2. Step 2: Use recursive comparison

        Check if left.left matches right.right and left.right matches right.left recursively to confirm mirror symmetry.
      3. Final Answer:

        Compare left subtree with right subtree by recursively checking if left.left matches right.right and left.right matches right.left -> Option D
      4. Quick Check:

        Symmetry = recursive mirror check [OK]
      Hint: Symmetry means left subtree mirrors right subtree recursively [OK]
      Common Mistakes:
      • Only comparing node counts, not structure
      • Comparing node values without structure
      • Using traversal orders that don't check mirror
      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