Bird
Raised Fist0
DSA Goprogramming~10 mins

Binary Tree Node Structure in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a binary tree node with an integer value.

DSA Go
type Node struct {
    Value int
    Left  *Node
    Right *[1]
}
Drag options to blanks, or click blank then click option'
ANodePtr
Bint
CTree
DNode
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-pointer type for child nodes causes incorrect tree structure.
Using unrelated types like int or Tree instead of Node.
2fill in blank
medium

Complete the code to create a new node with a given integer value.

DSA Go
func NewNode(val int) *Node {
    return &Node{Value: [1]
}
Drag options to blanks, or click blank then click option'
ANode
Bval
Cval.Value
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using an undefined variable like value or Node instead of val.
Trying to access val.Value which does not exist.
3fill in blank
hard

Fix the error in the code to assign the left child node correctly.

DSA Go
func (n *Node) SetLeft(child *Node) {
    n.Left = [1]
}
Drag options to blanks, or click blank then click option'
A&child
B*child
Cchild
DNode
Attempts:
3 left
💡 Hint
Common Mistakes
Using &child causes type mismatch (pointer to pointer).
Using *child tries to assign a value instead of a pointer.
4fill in blank
hard

Fill both blanks to check if a node is a leaf (no children).

DSA Go
func (n *Node) IsLeaf() bool {
    return n.Left == [1] && n.Right == [2]
}
Drag options to blanks, or click blank then click option'
Anil
Btrue
Cfalse
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using true or false instead of nil for pointer checks.
Using 0 which is not valid for pointers.
5fill in blank
hard

Fill all three blanks to create a map of node values to their left child values if present.

DSA Go
func LeftChildMap(root *Node) map[int]int {
    result := make(map[int]int)
    if root.Left != [1] {
        result[[2]] = root.Left.[3]
    }
    return result
}
Drag options to blanks, or click blank then click option'
Anil
Broot.Value
CValue
Droot.Left
Attempts:
3 left
💡 Hint
Common Mistakes
Using root.Left instead of root.Value as map key.
Using root.Left instead of Value to get child's value.
Checking against true or false instead of nil.

Practice

(1/5)
1. What is the correct way to define a node structure for a binary tree in Go?
easy
A. type Node struct { Value int; Left Node; Right Node }
B. type Node struct { Value int; Left *Node; Right *Node }
C. type Node struct { Value int; Left int; Right int }
D. type Node struct { Value *int; Left *int; Right *int }

Solution

  1. Step 1: Understand binary tree node components

    A binary tree node stores a value and pointers to left and right child nodes.
  2. Step 2: Check pointer usage in Go struct

    Using pointers (*Node) for Left and Right allows linking nodes without copying entire structs.
  3. Final Answer:

    type Node struct { Value int; Left *Node; Right *Node } -> Option B
  4. Quick Check:

    Node with pointers = type Node struct { Value int; Left *Node; Right *Node } [OK]
Hint: Use pointers for child nodes to avoid copying structs [OK]
Common Mistakes:
  • Using non-pointer types for child nodes causes infinite recursion
  • Using int instead of *Node for children
  • Using pointers to int instead of pointers to Node
2. Which of the following is the correct syntax to create a new binary tree node with value 10 in Go?
easy
A. node := Node{Value: 10, Left: nil, Right: nil}
B. node := Node(10, nil, nil)
C. node := &Node{Value: 10, Left: nil, Right: nil}
D. node := new(Node{10, nil, nil})

Solution

  1. Step 1: Understand node creation with pointers

    To create a pointer to a Node struct, use &Node{...} syntax.
  2. Step 2: Check each option's syntax

    node := &Node{Value: 10, Left: nil, Right: nil} correctly creates a pointer to a Node with value 10 and nil children.
  3. Final Answer:

    node := &Node{Value: 10, Left: nil, Right: nil} -> Option C
  4. Quick Check:

    Pointer node creation uses &Node{...} [OK]
Hint: Use &Node{...} to create pointer nodes [OK]
Common Mistakes:
  • Forgetting & to create pointer
  • Using new() incorrectly with struct literals
  • Calling Node() like a function
3. What will be the output of the following Go code snippet?
package main
import "fmt"

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

func main() {
  root := &Node{Value: 1}
  root.Left = &Node{Value: 2}
  root.Right = &Node{Value: 3}
  fmt.Println(root.Left.Value)
}
medium
A. 2
B. 1
C. 3
D. Compilation error

Solution

  1. Step 1: Analyze node assignments

    root.Left is assigned a node with Value 2, root.Right with Value 3, root.Value is 1.
  2. Step 2: Check printed value

    fmt.Println(root.Left.Value) prints the Value of the left child node, which is 2.
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    root.Left.Value = 2 [OK]
Hint: Print child node's Value to get assigned integer [OK]
Common Mistakes:
  • Printing root.Value instead of root.Left.Value
  • Confusing left and right child values
  • Expecting compilation error due to missing import
4. Identify the error in the following Go code defining a binary tree node:
type Node struct {
  Value int
  Left Node
  Right *Node
}

func main() {
  root := &Node{Value: 5}
  root.Left = Node{Value: 3}
}
medium
A. Left child should be a pointer to Node, not Node value
B. Right child should not be a pointer
C. Value field must be a pointer to int
D. Cannot assign struct literal to Left field

Solution

  1. Step 1: Check struct field types

    Left is declared as Node (value), Right as *Node (pointer). This causes recursive struct size issues.
  2. Step 2: Understand pointer necessity

    Binary tree nodes must use pointers for children to avoid infinite size and allow nil values.
  3. Final Answer:

    Left child should be a pointer to Node, not Node value -> Option A
  4. Quick Check:

    Child nodes must be pointers [OK]
Hint: Use *Node for all child fields to avoid infinite struct size [OK]
Common Mistakes:
  • Mixing pointer and value types for children
  • Expecting Go to allow recursive value fields
  • Ignoring nil possibility for children
5. Given the binary tree node structure below, how would you write a function in Go to insert a new value into a binary search tree?
type Node struct {
  Value int
  Left  *Node
  Right *Node
}
Choose the correct approach.
hard
A. Insert new value at root and push existing nodes down
B. Always insert new value as left child without comparison
C. Use a loop to find nil child and insert without comparison
D. Recursively compare new value with current node; insert left if smaller, right if larger; create new node if nil child

Solution

  1. Step 1: Understand binary search tree insertion logic

    New values less than current node go to left subtree; greater go to right subtree.
  2. Step 2: Use recursion to find correct insertion point

    Recursively traverse left or right child until a nil child is found, then insert new node there.
  3. Final Answer:

    Recursively compare new value with current node; insert left if smaller, right if larger; create new node if nil child -> Option D
  4. Quick Check:

    BST insertion uses recursive comparison [OK]
Hint: Compare and recurse left/right until nil, then insert [OK]
Common Mistakes:
  • Inserting without comparison breaks BST property
  • Always inserting on one side causes imbalance
  • Not handling nil child case properly
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