0
0
DSA Goprogramming~20 mins

Tree vs Array vs Linked List When Hierarchy Matters in DSA Go - Compare & Choose

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Hierarchy Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of traversing a simple tree structure
Given the following tree structure in Go, what is the output of the preorder traversal?
DSA Go
package main
import "fmt"
type Node struct {
    value int
    children []*Node
}

func preorder(n *Node) {
    if n == nil {
        return
    }
    fmt.Print(n.value, " -> ")
    for _, c := range n.children {
        preorder(c)
    }
}

func main() {
    root := &Node{value: 1}
    child1 := &Node{value: 2}
    child2 := &Node{value: 3}
    child3 := &Node{value: 4}
    root.children = []*Node{child1, child2}
    child1.children = []*Node{child3}
    preorder(root)
    fmt.Print("null")
}
A1 -> 2 -> 3 -> 4 -> null
B1 -> 3 -> 2 -> 4 -> null
C2 -> 4 -> 1 -> 3 -> null
D1 -> 2 -> 4 -> 3 -> null
Attempts:
2 left
💡 Hint
Preorder traversal visits the root first, then children from left to right.
🧠 Conceptual
intermediate
1:30remaining
Choosing data structure for hierarchical data with frequent insertions
Which data structure is best suited to represent a hierarchy where nodes are frequently inserted or removed at various levels?
ALinked List, because it allows efficient insertions and deletions at any position
BTree, because it naturally represents hierarchical relationships and supports dynamic changes
CArray, because it allows fast random access to elements
DStack, because it manages elements in a last-in-first-out order
Attempts:
2 left
💡 Hint
Think about which structure models hierarchy and supports dynamic changes well.
🔧 Debug
advanced
2:00remaining
Identify the bug in linked list hierarchy representation
Consider this Go code snippet representing a linked list node with a parent pointer to represent hierarchy. What is the bug that causes incorrect parent linkage?
DSA Go
type Node struct {
    value int
    next *Node
    parent *Node
}

func main() {
    root := &Node{value: 1}
    child := &Node{value: 2, parent: root}
    root.next = child
    child.parent = child
}
AThe line 'child.parent = child' incorrectly sets the parent to itself instead of root
BThe 'next' pointer should be nil for root node
CThe 'parent' field should be of type int, not *Node
DThe 'value' field is not initialized for child node
Attempts:
2 left
💡 Hint
Check the assignment of the parent pointer for the child node.
Predict Output
advanced
2:00remaining
Output of converting tree to array with level order traversal
What is the output of the following Go code that performs a level order traversal (breadth-first) of a tree and stores values in an array?
DSA Go
package main
import "fmt"

type Node struct {
    value int
    children []*Node
}

func levelOrder(root *Node) []int {
    if root == nil {
        return []int{}
    }
    var result []int
    queue := []*Node{root}
    for len(queue) > 0 {
        current := queue[0]
        queue = queue[1:]
        result = append(result, current.value)
        for _, c := range current.children {
            queue = append(queue, c)
        }
    }
    return result
}

func main() {
    root := &Node{value: 10}
    c1 := &Node{value: 20}
    c2 := &Node{value: 30}
    c3 := &Node{value: 40}
    root.children = []*Node{c1, c2}
    c1.children = []*Node{c3}
    arr := levelOrder(root)
    fmt.Println(arr)
}
A[10 20 40 30]
B[10 30 20 40]
C[10 20 30 40]
D[20 30 40 10]
Attempts:
2 left
💡 Hint
Level order visits nodes level by level from left to right.
🧠 Conceptual
expert
1:30remaining
Why linked list is not ideal for representing hierarchical data
Which of the following is the main reason linked lists are not ideal for representing hierarchical data structures?
ALinked lists do not support random access, making it hard to navigate hierarchy levels efficiently
BLinked lists use too much memory compared to arrays
CLinked lists cannot store data of different types
DLinked lists are immutable and cannot be changed after creation
Attempts:
2 left
💡 Hint
Think about how hierarchy navigation requires moving up and down levels quickly.