0
0
DSA Goprogramming~20 mins

Mirror a Binary Tree in DSA Go - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Mirror Tree Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Mirroring a Simple Binary Tree
What is the output of the following Go code after mirroring the binary tree? The output prints the tree nodes in preorder (root, left, right).
DSA Go
package main

import "fmt"

type Node struct {
    Val   int
    Left  *Node
    Right *Node
}

func mirror(root *Node) *Node {
    if root == nil {
        return nil
    }
    root.Left, root.Right = mirror(root.Right), mirror(root.Left)
    return root
}

func preorder(root *Node) {
    if root == nil {
        return
    }
    fmt.Print(root.Val, " ")
    preorder(root.Left)
    preorder(root.Right)
}

func main() {
    root := &Node{Val: 1}
    root.Left = &Node{Val: 2}
    root.Right = &Node{Val: 3}
    root.Left.Left = &Node{Val: 4}
    root.Left.Right = &Node{Val: 5}

    mirror(root)
    preorder(root)
}
A1 2 3 4 5
B1 3 2 4 5
C1 2 3 5 4
D1 3 2 5 4
Attempts:
2 left
💡 Hint
Think about swapping left and right children at every node.
🧠 Conceptual
intermediate
1:30remaining
Understanding Mirror Operation on Binary Trees
Which statement correctly describes the effect of the mirror operation on a binary tree?
AIt swaps the left and right children of every node in the tree.
BIt removes all leaf nodes from the tree.
CIt reverses the order of nodes in the inorder traversal only.
DIt duplicates every node and attaches the duplicate as the left child.
Attempts:
2 left
💡 Hint
Think about what happens to each node's children after mirroring.
🔧 Debug
advanced
2:00remaining
Identify the Error in Mirror Function Implementation
What error does the following Go code produce when trying to mirror a binary tree?
DSA Go
func mirror(root *Node) *Node {
    if root == nil {
        return root
    }
    temp := root.Left
    root.Left = root.Right
    root.Right = temp
    mirror(root.Left)
    mirror(root.Right)
    return root
}
ACompilation error: missing return statement.
BNo error; code runs correctly and mirrors the tree.
CNil pointer dereference runtime error.
DStack overflow due to infinite recursion.
Attempts:
2 left
💡 Hint
Check the base case and recursive calls carefully.
Predict Output
advanced
2:00remaining
Output After Mirroring a Skewed Binary Tree
Given the following skewed binary tree and mirror function, what is the preorder output after mirroring?
DSA Go
package main

import "fmt"

type Node struct {
    Val   int
    Left  *Node
    Right *Node
}

func mirror(root *Node) *Node {
    if root == nil {
        return nil
    }
    root.Left, root.Right = mirror(root.Right), mirror(root.Left)
    return root
}

func preorder(root *Node) {
    if root == nil {
        return
    }
    fmt.Print(root.Val, " ")
    preorder(root.Left)
    preorder(root.Right)
}

func main() {
    root := &Node{Val: 1}
    root.Right = &Node{Val: 2}
    root.Right.Right = &Node{Val: 3}
    root.Right.Right.Right = &Node{Val: 4}

    mirror(root)
    preorder(root)
}
A1 2 3 4
B1 2 3
C1 4 3 2
D1 4 3
Attempts:
2 left
💡 Hint
Mirroring a right-skewed tree makes it left-skewed.
🧠 Conceptual
expert
2:30remaining
Effect of Mirroring on Tree Height and Structure
After mirroring a binary tree, which of the following statements is always true?
AThe height of the tree remains the same, but the left and right subtrees are swapped at every node.
BThe height of the tree doubles because nodes are duplicated.
CThe tree becomes a complete binary tree regardless of original shape.
DAll leaf nodes become internal nodes after mirroring.
Attempts:
2 left
💡 Hint
Mirroring flips the tree horizontally but does not add or remove nodes.