Bird
Raised Fist0
DSA C++programming~10 mins

Tree vs Array vs Linked List When Hierarchy Matters in DSA C++ - Interactive Comparison Practice

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

Complete the code to declare a simple array of integers.

DSA C++
int arr[5] = [1];
Drag options to blanks, or click blank then click option'
A[1, 2, 3, 4, 5]
B{1, 2, 3, 4, 5}
C(1, 2, 3, 4, 5)
D<1, 2, 3, 4, 5>
Attempts:
3 left
💡 Hint
Common Mistakes
Using parentheses or square brackets instead of curly braces.
Forgetting to use any braces.
2fill in blank
medium

Complete the code to create a linked list node struct with an integer value and a pointer to the next node.

DSA C++
struct Node {
    int data;
    [1] next;
};
Drag options to blanks, or click blank then click option'
ANode&
Bint*
CNode*
DNode
Attempts:
3 left
💡 Hint
Common Mistakes
Using reference & instead of pointer *.
Using int* instead of Node*.
3fill in blank
hard

Fix the error in the tree node constructor to initialize the value and set left and right children to nullptr.

DSA C++
struct TreeNode {
    int val;
    TreeNode* left;
    TreeNode* right;
    TreeNode(int x) : val(x), left([1]), right([2]) {}
};
Drag options to blanks, or click blank then click option'
ANULL
Bnullptr
C0
DNULLPTR
Attempts:
3 left
💡 Hint
Common Mistakes
Using NULL instead of nullptr.
Using 0 which is less clear.
4fill in blank
hard

Fill both blanks to create a function that returns the number of children of a binary tree node.

DSA C++
int countChildren(TreeNode* node) {
    int count = 0;
    if (node->left [1] nullptr) count++;
    if (node->right [2] nullptr) count++;
    return count;
}
Drag options to blanks, or click blank then click option'
A!=
B==
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using equality operator which counts missing children.
Using greater or less than operators which are invalid for pointers.
5fill in blank
hard

Fill all three blanks to create a function that builds a linked list from an array of integers.

DSA C++
Node* buildList(int arr[], int size) {
    if (size == 0) return [1];
    Node* head = new Node();
    head->data = arr[0];
    head->next = buildList(arr + 1, [2]);
    return [3];
}
Drag options to blanks, or click blank then click option'
Anullptr
Bsize - 1
Chead
DNULL
Attempts:
3 left
💡 Hint
Common Mistakes
Returning NULL instead of nullptr.
Passing wrong size in recursive call.
Returning wrong variable instead of head.

Practice

(1/5)
1. Which data structure is best suited to represent hierarchical relationships like a family tree?
easy
A. Stack
B. Tree
C. Linked List
D. Array

Solution

  1. Step 1: Understand hierarchy representation

    Hierarchical data means elements have parent-child relationships, like a family tree.
  2. Step 2: Match data structure to hierarchy

    Trees naturally represent hierarchy with nodes connected to children, unlike arrays or linked lists which are linear.
  3. Final Answer:

    Tree -> Option B
  4. Quick Check:

    Hierarchy needs Tree [OK]
Hint: Hierarchy means parent-child links, use Tree [OK]
Common Mistakes:
  • Choosing Array because it's simple
  • Choosing Linked List thinking it's hierarchical
  • Confusing Stack with hierarchy
2. Which of the following is the correct way to declare a simple linked list node in C++?
easy
A. struct Node { int data; Node& next; };
B. struct Node { int data; Node next; };
C. struct Node { int data; Node next*; };
D. struct Node { int data; Node* next; };

Solution

  1. Step 1: Check pointer usage in struct

    Linked list nodes must point to next node using a pointer type (Node*).
  2. Step 2: Validate syntax correctness

    struct Node { int data; Node* next; }; uses Node* next; which is correct pointer syntax. Others have invalid pointer or reference syntax.
  3. Final Answer:

    struct Node { int data; Node* next; }; -> Option D
  4. Quick Check:

    Pointer to next node uses Node* [OK]
Hint: Use Node* for next pointer in linked list node [OK]
Common Mistakes:
  • Using Node next instead of Node* next
  • Using reference Node& which is invalid here
  • Incorrect pointer syntax like next*
3. What will be the output of the following C++ code snippet?
struct Node {
  int data;
  Node* next;
};

int main() {
  Node a{1, nullptr};
  Node b{2, &a};
  Node* head = &b;
  while (head) {
    std::cout << head->data << " ";
    head = head->next;
  }
  return 0;
}
medium
A. 1
B. 1 2
C. 2 1
D. 2

Solution

  1. Step 1: Understand node linking

    Node b points to a, so list order is b -> a.
  2. Step 2: Trace the while loop output

    Prints b.data (2), then a.data (1), then nullptr ends loop.
  3. Final Answer:

    2 1 -> Option C
  4. Quick Check:

    Linked list prints 2 then 1 [OK]
Hint: Follow next pointers to print nodes in order [OK]
Common Mistakes:
  • Assuming order is a then b
  • Confusing pointer directions
  • Printing only first node
4. Identify the error in this code snippet that tries to create a tree node in C++:
struct TreeNode {
  int val;
  TreeNode* left;
  TreeNode* right;
};

int main() {
  TreeNode root;
  root.val = 10;
  root.left = nullptr;
  root.right = nullptr;
  root.left->val = 5;
  return 0;
}
medium
A. Dereferencing nullptr in root.left->val
B. Missing semicolon after struct definition
C. Incorrect pointer declaration for left and right
D. root.val should be initialized with new keyword

Solution

  1. Step 1: Analyze pointer initialization

    root.left is set to nullptr, so it points to nothing.
  2. Step 2: Check pointer dereference

    Accessing root.left->val dereferences nullptr causing runtime error.
  3. Final Answer:

    Dereferencing nullptr in root.left->val -> Option A
  4. Quick Check:

    Cannot access member via nullptr [OK]
Hint: Never dereference nullptr pointers [OK]
Common Mistakes:
  • Ignoring nullptr before dereference
  • Thinking struct needs semicolon error
  • Confusing pointer declaration syntax
5. You want to store a company's organizational chart where each employee can have multiple subordinates. Which data structure is best and why? A) Array because it stores data contiguously B) Tree because it naturally models multiple children per node C) Linked List because it allows dynamic size D) Stack because it supports last-in-first-out access
hard
A. Tree because it naturally models multiple children per node
B. Array because it stores data contiguously
C. Linked List because it allows dynamic size
D. Stack because it supports last-in-first-out access

Solution

  1. Step 1: Understand organizational chart structure

    Each employee can have multiple subordinates, forming a hierarchy with multiple children per node.
  2. Step 2: Match data structure to hierarchy with multiple children

    Trees allow nodes to have multiple children, perfect for this use case. Arrays and linked lists are linear, stacks are LIFO.
  3. Final Answer:

    Tree because it naturally models multiple children per node -> Option A
  4. Quick Check:

    Multiple children per node means Tree [OK]
Hint: Multiple children? Use Tree for hierarchy [OK]
Common Mistakes:
  • Choosing Array for hierarchy
  • Choosing Linked List for multiple children
  • Confusing Stack with hierarchical needs
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