Bird
Raised Fist0
DSA Javascriptprogramming~10 mins

Why Trees Exist and What Linked Lists and Arrays Cannot Do in DSA Javascript - Test Your Knowledge

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

Complete the code to create a root node for a tree.

DSA Javascript
const root = { value: 10, children: [1] };
Drag options to blanks, or click blank then click option'
Anull
B{}
C[]
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using {} which is an object, not a list.
Using null which means no children but we want an empty list.
Using 0 which is a number, not a list.
2fill in blank
medium

Complete the code to add a child node to the root's children array.

DSA Javascript
root.children.[1]({ value: 20, children: [] });
Drag options to blanks, or click blank then click option'
Apush
Bunshift
Cshift
Dpop
Attempts:
3 left
💡 Hint
Common Mistakes
Using pop which removes the last element.
Using shift which removes the first element.
Using unshift which adds to the start, not the end.
3fill in blank
hard

Fix the error in the function that counts total nodes in a tree.

DSA Javascript
function countNodes(node) {
  let count = 1;
  for (const child of node.children) {
    count += countNodes([1]);
  }
  return count;
}
Drag options to blanks, or click blank then click option'
Achild
Bnode
Cchildren
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Passing node causes infinite recursion.
Passing children is undefined in this scope.
Passing count is a number, not a node.
4fill in blank
hard

Fill both blanks to create a function that finds a node by value in a tree.

DSA Javascript
function findNode(node, value) {
  if (node.value === [1]) return node;
  for (const child of node.[2]) {
    const found = findNode(child, value);
    if (found) return found;
  }
  return null;
}
Drag options to blanks, or click blank then click option'
Avalue
Bchildren
Cchild
Dval
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing to val which is undefined.
Looping over child which is a variable, not a property.
Looping over node which is an object, not iterable.
5fill in blank
hard

Fill all three blanks to create a function that collects all values in a tree into an array.

DSA Javascript
function collectValues(node) {
  let values = [[1]];
  for (const child of node.[2]) {
    values = values.concat(collectValues([3]));
  }
  return values;
}
Drag options to blanks, or click blank then click option'
Anode.value
Bchildren
Cchild
Dnode
Attempts:
3 left
💡 Hint
Common Mistakes
Using node instead of child in recursion.
Using node.children inside the loop instead of child.
Starting values with an empty array instead of including current node's value.

Practice

(1/5)
1. Why do trees exist as a data structure when we already have arrays and linked lists?
easy
A. Because trees can represent hierarchical relationships which arrays and linked lists cannot.
B. Because trees use less memory than arrays and linked lists.
C. Because trees are easier to implement than arrays and linked lists.
D. Because trees always store data in sorted order unlike arrays and linked lists.

Solution

  1. Step 1: Understand the limitation of arrays and linked lists

    Arrays and linked lists store data linearly, so they cannot naturally represent parent-child or hierarchical relationships.
  2. Step 2: Identify the unique feature of trees

    Trees allow nodes to have multiple children, representing hierarchical data like file systems or organization charts.
  3. Final Answer:

    Trees represent hierarchical relationships which arrays and linked lists cannot. -> Option A
  4. Quick Check:

    Hierarchy needs trees = B [OK]
Hint: Trees model hierarchy; arrays and lists are linear [OK]
Common Mistakes:
  • Thinking trees use less memory than arrays
  • Believing trees are simpler to implement
  • Assuming trees always store sorted data
2. Which of the following is the correct way to create a simple tree node object in JavaScript?
easy
A. const node = new TreeNode(5, []);
B. const node = { value: 5, children: [] };
C. const node = (value: 5, children: []);
D. const node = [5, []];

Solution

  1. Step 1: Recall JavaScript object syntax

    Objects use curly braces with key-value pairs, like { key: value }.
  2. Step 2: Check each option

    const node = { value: 5, children: [] }; uses correct object syntax with keys 'value' and 'children'. const node = [5, []]; is an array, not an object. const node = (value: 5, children: []); uses invalid syntax. const node = new TreeNode(5, []); assumes a class TreeNode which is not defined.
  3. Final Answer:

    const node = { value: 5, children: [] }; -> Option B
  4. Quick Check:

    JS object syntax = D [OK]
Hint: JS objects use curly braces with key-value pairs [OK]
Common Mistakes:
  • Using array syntax instead of object
  • Using invalid parentheses syntax
  • Assuming class exists without definition
3. What will be the output of the following code that creates a simple tree and prints the root's first child's value?
const root = { value: 1, children: [ { value: 2, children: [] }, { value: 3, children: [] } ] };
console.log(root.children[0].value);
medium
A. undefined
B. 1
C. 3
D. 2

Solution

  1. Step 1: Understand the tree structure

    The root node has value 1 and two children with values 2 and 3.
  2. Step 2: Access the first child's value

    root.children[0] refers to the first child node with value 2, so root.children[0].value is 2.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    root.children[0].value = 2 [OK]
Hint: Index 0 child value is root.children[0].value [OK]
Common Mistakes:
  • Printing root.value instead of child's
  • Using wrong index for children
  • Confusing children array with object
4. Find the error in this code that tries to add a child node to a tree:
const root = { value: 10, children: [] };
root.children.push({ value: 20 });
console.log(root.children[0].value);
medium
A. The root node should not have a 'children' property.
B. The push method cannot be used on arrays.
C. The child node is missing the 'children' array property.
D. The console.log syntax is incorrect.

Solution

  1. Step 1: Check the child node structure

    The child node added has only 'value' but no 'children' array, which breaks the tree node structure.
  2. Step 2: Understand tree node consistency

    Each node should have a 'children' property as an array, even if empty, to maintain uniformity.
  3. Final Answer:

    The child node is missing the 'children' array property. -> Option C
  4. Quick Check:

    Missing children array in child node = A [OK]
Hint: Every tree node needs a children array [OK]
Common Mistakes:
  • Thinking push is invalid on arrays
  • Believing root shouldn't have children
  • Assuming console.log syntax is wrong
5. You want to represent a company's organizational chart where each employee can have multiple subordinates. Which data structure is best and why compared to arrays or linked lists?
hard
A. Use a tree because it naturally models hierarchical relationships with multiple children per node.
B. Use an array because it allows fast access to any employee by index.
C. Use a linked list because it is simple and efficient for sequential access.
D. Use a stack because it stores employees in last-in-first-out order.

Solution

  1. Step 1: Analyze the problem requirements

    The organizational chart has a hierarchy where each employee can have many subordinates, forming a tree-like structure.
  2. Step 2: Compare data structures

    Arrays and linked lists are linear and cannot represent multiple children per node naturally. Trees allow each node to have multiple children, matching the hierarchy.
  3. Final Answer:

    Use a tree because it naturally models hierarchical relationships with multiple children per node. -> Option A
  4. Quick Check:

    Hierarchy with multiple children = tree = C [OK]
Hint: Hierarchy with multiple children needs trees, not linear lists [OK]
Common Mistakes:
  • Choosing arrays for hierarchical data
  • Using linked lists for multi-child nodes
  • Confusing stack usage with hierarchy
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