Bird
Raised Fist0
DSA C#programming~10 mins

Why Trees Exist and What Linked Lists and Arrays Cannot Do in DSA C# - 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 tree node with a value.

DSA C#
public class TreeNode {
    public int Value;
    public List<TreeNode> Children = new List<TreeNode>();

    public TreeNode(int value) {
        Value = [1];
    }
}
Drag options to blanks, or click blank then click option'
Avalue
Bnode
Cval
Dchild
Attempts:
3 left
💡 Hint
Common Mistakes
Using an undefined variable like 'val' or 'node'.
Forgetting to assign the parameter to the field.
2fill in blank
medium

Complete the code to add a child node to the current tree node.

DSA C#
public void AddChild(TreeNode child) {
    Children.[1](child);
}
Drag options to blanks, or click blank then click option'
AAdd
Bappend
Cinsert
Dpush
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'append' which is a Python method.
Using 'push' which is common in stacks or JavaScript arrays.
3fill in blank
hard

Fix the error in the method that counts total nodes in the tree.

DSA C#
public int CountNodes() {
    int count = 1;
    foreach (var child in Children) {
        count += child.[1]();
    }
    return count;
}
Drag options to blanks, or click blank then click option'
AcountNodes
BCountnode
CCountNodes
Dcountnode
Attempts:
3 left
💡 Hint
Common Mistakes
Using lowercase method names which cause errors.
Misspelling the method name.
4fill in blank
hard

Fill both blanks to create a dictionary of node values and their counts for children with value > 5.

DSA C#
var result = new Dictionary<int, int>();
foreach (var child in Children) {
    if (child.Value [1] 5) {
        if (!result.ContainsKey(child.Value)) {
            result[child.Value] = [2];
        }
        result[child.Value]++;
    }
}
Drag options to blanks, or click blank then click option'
A>
B0
C<
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' in the condition.
Initializing count to 1 which causes double counting.
5fill in blank
hard

Fill all three blanks to create a dictionary mapping uppercase node values to their counts if count > 0.

DSA C#
var counts = new Dictionary<string, int>();
foreach (var node in nodes) {
    var key = node.Value.ToString().[1]();
    if (!counts.ContainsKey(key)) {
        counts[key] = [2];
    }
    counts[key]++;
}
var filtered = counts.Where(kv => kv.Value [3] 0).ToDictionary(kv => kv.Key, kv => kv.Value);
Drag options to blanks, or click blank then click option'
AToUpper
B0
C>
DToLower
Attempts:
3 left
💡 Hint
Common Mistakes
Using ToLower instead of ToUpper.
Initializing counts to 1 causing off-by-one errors.
Using '<' instead of '>' in the filter condition.

Practice

(1/5)
1. Why do trees exist as a data structure when we already have arrays and linked lists?
easy
A. Because trees are easier to implement than arrays and linked lists
B. Because trees use less memory than arrays and linked lists
C. Because trees always provide faster access to elements than arrays and linked lists
D. Because trees allow hierarchical data representation which arrays and linked lists cannot efficiently handle

Solution

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

    Arrays and linked lists store data linearly, which makes representing hierarchical relationships difficult and inefficient.
  2. Step 2: Recognize the advantage of trees

    Trees naturally represent hierarchical data, such as file systems or organizational charts, allowing efficient traversal and management of such structures.
  3. Final Answer:

    Trees allow hierarchical data representation which arrays and linked lists cannot efficiently handle -> Option D
  4. Quick Check:

    Hierarchical data needs trees [OK]
Hint: Trees handle hierarchy; arrays and lists are linear [OK]
Common Mistakes:
  • Thinking trees always use less memory
  • Assuming trees are simpler to implement
  • Believing trees always have faster access
2. Which of the following is the correct way to declare a simple binary tree node class in C#?
easy
A. class TreeNode { public int Value; public TreeNode Left, Right; private TreeNode Parent; }
B. public class TreeNode { int Value; int Left; int Right; }
C. public class TreeNode { public int Value; public TreeNode Left; public TreeNode Right; }
D. public struct TreeNode { public int Value; public TreeNode Left; public TreeNode Right; }

Solution

  1. Step 1: Check for correct access modifiers and types

    public class TreeNode { public int Value; public TreeNode Left; public TreeNode Right; } uses public fields and correct types for left and right child nodes, which is standard for a binary tree node.
  2. Step 2: Identify issues in other options

    public class TreeNode { int Value; int Left; int Right; } uses int for Left and Right which is incorrect; class TreeNode { public int Value; public TreeNode Left, Right; private TreeNode Parent; } has a private Parent which is not necessary here; public struct TreeNode { public int Value; public TreeNode Left; public TreeNode Right; } uses struct which is possible but less common and can cause issues with references.
  3. Final Answer:

    public class TreeNode { public int Value; public TreeNode Left; public TreeNode Right; } -> Option C
  4. Quick Check:

    Correct class with public TreeNode references [OK]
Hint: Tree nodes link to other nodes, not ints [OK]
Common Mistakes:
  • Using int instead of TreeNode for children
  • Making fields private without accessors
  • Using struct instead of class for nodes
3. What will be the output of the following C# code snippet?
class TreeNode {
  public int Value;
  public TreeNode Left, Right;
  public TreeNode(int val) { Value = val; }
}

var root = new TreeNode(10);
root.Left = new TreeNode(5);
root.Right = new TreeNode(15);
Console.WriteLine(root.Left.Value + ", " + root.Right.Value);
medium
A. 5, 15
B. 10, 15
C. 5, 10
D. Compilation error

Solution

  1. Step 1: Understand the tree structure created

    The root node has value 10, with left child 5 and right child 15.
  2. Step 2: Trace the Console.WriteLine statement

    It prints the left child's value (5) and right child's value (15) separated by a comma.
  3. Final Answer:

    5, 15 -> Option A
  4. Quick Check:

    Print left and right child values [OK]
Hint: Print left and right node values directly [OK]
Common Mistakes:
  • Confusing root value with child values
  • Expecting output order as right then left
  • Assuming code has errors
4. The following code attempts to create a binary tree node but has an error. What is the error?
public class TreeNode {
  public int Value;
  public TreeNode Left, Right;
  public TreeNode(int val) {
    Value = val;
    Left = null;
    Right = null;
  }
}

var node = new TreeNode();
medium
A. No error, code runs fine
B. Constructor requires an int parameter but none provided
C. Left and Right should be initialized outside constructor
D. TreeNode cannot have null children

Solution

  1. Step 1: Check the constructor definition

    The constructor requires an int parameter 'val' to initialize Value.
  2. Step 2: Analyze the object creation

    The code calls new TreeNode() without any arguments, causing a compilation error.
  3. Final Answer:

    Constructor requires an int parameter but none provided -> Option B
  4. Quick Check:

    Constructor parameters must match call [OK]
Hint: Match constructor parameters when creating objects [OK]
Common Mistakes:
  • Ignoring constructor parameters
  • Thinking null children cause error
  • Assuming default constructor exists
5. You want to represent a company's organizational chart where each employee can have multiple subordinates. Which data structure is best suited and why?
hard
A. Tree, because it naturally models hierarchical relationships with multiple children
B. Array, because it stores elements sequentially
C. Linked list, because it allows dynamic insertion
D. Stack, because it follows last-in-first-out order

Solution

  1. Step 1: Understand the problem context

    An organizational chart is hierarchical, with employees having multiple subordinates (children).
  2. Step 2: Match data structure to hierarchy

    Trees can represent hierarchical data with nodes having multiple children, unlike arrays or linked lists which are linear.
  3. Step 3: Eliminate unsuitable options

    Arrays and linked lists do not model hierarchy well; stacks are for LIFO order, not hierarchy.
  4. Final Answer:

    Tree, because it naturally models hierarchical relationships with multiple children -> Option A
  5. Quick Check:

    Hierarchy needs trees [OK]
Hint: Hierarchy with multiple children means tree [OK]
Common Mistakes:
  • Choosing arrays or lists for hierarchy
  • Confusing stack usage
  • Ignoring multiple children requirement
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