Bird
Raised Fist0
DSA C++programming~5 mins

Mirror a Binary Tree in DSA C++ - 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
intermediate
Which traversal method is commonly used to mirror a binary tree?
A post-order traversal is commonly used because it processes children before the parent, allowing safe swapping of left and right subtrees.
Click to reveal answer
beginner
Show the base case condition in a recursive function to mirror a binary tree.
The base case is when the current node is null (empty), then return immediately because there is nothing to mirror.
Click to reveal answer
beginner
What happens to the left and right children of a node during mirroring?
The left and right children are swapped. The left child becomes the right child and the right child becomes the left child.
Click to reveal answer
intermediate
Why is it important to recursively mirror the subtrees before swapping the children?
Recursively mirroring subtrees first ensures that the entire subtree is mirrored before swapping, preserving the correct mirror structure.
Click to reveal answer
What is the first step in mirroring a binary tree recursively?
ACheck if the current node is null
BSwap the left and right children immediately
CPrint the current node value
DCreate a new tree
After mirroring the left and right subtrees, what do you do next?
AReturn the current node without changes
BDelete the current node
CAdd a new child node
DSwap the left and right children of the current node
Which traversal order is best suited for mirroring a binary tree?
APre-order
BIn-order
CPost-order
DLevel-order
What will be the mirror of a tree with only one node?
AThe same single-node tree
BA tree with two nodes
CAn empty tree
DA tree with swapped children
If a node has left child 2 and right child 3, what will be after mirroring?
ALeft child 2, right child 3
BLeft child 3, right child 2
CNo children
DLeft child null, right child null
Explain step-by-step how to mirror a binary tree using recursion.
Think about what happens at each node and how recursion helps.
You got /4 concepts.
    Describe the changes in the tree structure after mirroring a binary tree.
    Imagine flipping the tree like a reflection in a mirror.
    You got /3 concepts.

      Practice

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

      Solution

      1. Step 1: Understand the mirror operation

        Mirroring means swapping left and right children of every node in the tree.
      2. Step 2: Clarify what happens to nodes

        Each node's left child becomes its right child and vice versa, recursively.
      3. Final Answer:

        Swapping the left and right children of every node -> Option C
      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
      • Confusing mirror with tree traversal order
      • Assuming mirror deletes nodes
      2. Which of the following is the correct C++ function signature to mirror a binary tree node?
      easy
      A. void mirror(Node* root)
      B. int mirror(Node root)
      C. Node mirror(Node* root)
      D. void mirror(Node root)

      Solution

      1. Step 1: Identify correct parameter type

        The function should take a pointer to the root node to modify the tree in place.
      2. Step 2: Identify correct return type

        Since the tree is modified in place, the function can return void.
      3. Final Answer:

        void mirror(Node* root) -> Option A
      4. Quick Check:

        Pointer param + void return = void mirror(Node* root) [OK]
      Hint: Use pointer parameter and void return for in-place tree changes [OK]
      Common Mistakes:
      • Passing node by value instead of pointer
      • Returning Node instead of void
      • Using incorrect parameter types
      3. What is the output of the following code after mirroring the binary tree?
      struct Node {
        int data;
        Node* left;
        Node* right;
      };
      
      void mirror(Node* root) {
        if (!root) return;
        mirror(root->left);
        mirror(root->right);
        Node* temp = root->left;
        root->left = root->right;
        root->right = temp;
      }
      
      // Tree before mirror:
      //     1
      //    / \
      //   2   3
      //  /     \
      // 4       5
      
      Node* root = new Node{1, new Node{2, new Node{4, nullptr, nullptr}, nullptr}, new Node{3, nullptr, new Node{5, nullptr, nullptr}}};
      mirror(root);
      // Print inorder traversal
      void inorder(Node* node) {
        if (!node) return;
        inorder(node->left);
        std::cout << node->data << " ";
        inorder(node->right);
      }
      inorder(root);
      medium
      A. 5 3 1 4 2
      B. 5 3 1 2 4
      C. 1 2 4 3 5
      D. 4 2 1 3 5

      Solution

      1. Step 1: Understand the original tree and inorder traversal

        Original inorder: left-root-right = 4 2 1 3 5
      2. Step 2: Mirror swaps left and right children recursively

        Mirrored tree structure: 1 / \ 3 2 / \ 5 4 Inorder traversal now: 5 3 1 2 4
      3. Final Answer:

        5 3 1 2 4 -> Option B
      4. Quick Check:

        Inorder mirrored = 5 3 1 2 4 [OK]
      Hint: Mirror swaps children; inorder reverses left-right order [OK]
      Common Mistakes:
      • Not swapping children correctly
      • Confusing preorder with inorder traversal
      • Printing original tree instead of mirrored
      4. Identify the error in this mirror function and choose the fix:
      void mirror(Node* root) {
        if (root == nullptr) return;
        mirror(root->left);
        mirror(root->right);
        Node* temp = root->left;
        root->left = root->right;
        root->right = temp;
        return root;
      }
      medium
      A. Swap root->left and root->right before recursive calls
      B. Change 'if (root == nullptr)' to 'if (!root->left && !root->right)'
      C. Add 'delete temp;' after swapping
      D. Function should return void, remove 'return root;'

      Solution

      1. Step 1: Check function return type and usage

        The function is declared void but tries to return root pointer, which causes a compile error.
      2. Step 2: Fix by removing the return statement

        Since the tree is modified in place, no return is needed; remove 'return root;'.
      3. Final Answer:

        Function should return void, remove 'return root;' -> Option D
      4. Quick Check:

        Void function must not return value [OK]
      Hint: Void functions should not return values [OK]
      Common Mistakes:
      • Returning value from void function
      • Changing base case incorrectly
      • Deleting nodes unnecessarily
      5. Given a binary tree, how would you modify the mirror function to also count how many nodes were swapped during the mirroring process?
      hard
      A. Return the number of nodes from the function and sum left and right counts
      B. Add a counter parameter and increment it each time children are swapped
      C. Use a global variable to count swaps inside the mirror function
      D. Count nodes before and after mirroring and subtract counts

      Solution

      1. Step 1: Understand counting swaps during recursion

        Each node swap can be counted by returning 1 plus counts from left and right subtrees.
      2. Step 2: Modify mirror to return int and sum counts

        Return 0 if node is null; else return 1 + mirror(left) + mirror(right).
      3. Final Answer:

        Return the number of nodes from the function and sum left and right counts -> Option A
      4. Quick Check:

        Return counts from recursion to sum swaps [OK]
      Hint: Return counts from recursion to sum swapped nodes [OK]
      Common Mistakes:
      • Using global variables causing side effects
      • Counting nodes before and after mirroring (no change)
      • Not accumulating counts correctly
      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