Bird
Raised Fist0
DSA Rustprogramming~5 mins

Tree Terminology Root Leaf Height Depth Level in DSA Rust - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Tree Terminology Root Leaf Height Depth Level
O(n)
Understanding Time Complexity

We want to understand how the time to visit parts of a tree grows as the tree gets bigger.

How does the number of steps change when we look at nodes from root to leaves?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


struct Node {
    value: i32,
    children: Vec<Node>,
}

fn height(node: &Node) -> usize {
    if node.children.is_empty() {
        0
    } else {
        1 + node.children.iter().map(|child| height(child)).max().unwrap_or(0)
    }
}
    

This code finds the height of a tree by checking all children recursively.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Recursive calls to visit each child node.
  • How many times: Once for every node in the tree.
How Execution Grows With Input

As the tree grows with more nodes, the function visits each node once.

Input Size (n)Approx. Operations
10About 10 visits
100About 100 visits
1000About 1000 visits

Pattern observation: The number of steps grows directly with the number of nodes.

Final Time Complexity

Time Complexity: O(n)

This means the time to find the height grows in a straight line with the number of nodes.

Common Mistake

[X] Wrong: "The height function only looks at the longest path, so it runs in constant time."

[OK] Correct: Even though height depends on the longest path, the function must visit every node to be sure, so it takes time proportional to all nodes.

Interview Connect

Understanding how tree operations scale helps you explain your code clearly and shows you know how data grows in real problems.

Self-Check

"What if the tree was a linked list (each node has only one child)? How would the time complexity change?"

Practice

(1/5)
1. In a tree data structure, which node is called the root?
easy
A. The topmost node with no parent
B. Any node with no children
C. A node at the deepest level
D. A node with exactly two children

Solution

  1. Step 1: Understand the root node concept

    The root node is the starting point of a tree and has no parent node above it.
  2. Step 2: Differentiate root from other nodes

    Leaf nodes have no children, and other nodes may have parents. Only the root has no parent.
  3. Final Answer:

    The topmost node with no parent -> Option A
  4. Quick Check:

    Root = top node with no parent [OK]
Hint: Root is the node with no parent, always at the top [OK]
Common Mistakes:
  • Confusing root with leaf nodes
  • Thinking root must have children
  • Assuming root is the deepest node
2. Which of the following Rust code snippets correctly defines a leaf node in a binary tree?
easy
A. let leaf = Node { value: 5, left: Some(Box::new(Node)), right: None };
B. struct Node { value: i32, left: Option, right: Option }
C. let leaf = Node { value: 5, left: None, right: None };
D. let leaf = Node { value: 5, left: Some(Box::new(Node)), right: Some(Box::new(Node)) };

Solution

  1. Step 1: Identify leaf node properties

    A leaf node has no children, so both left and right must be None.
  2. Step 2: Check each option for correct leaf definition

    let leaf = Node { value: 5, left: None, right: None }; sets left and right to None, correctly defining a leaf node.
  3. Final Answer:

    let leaf = Node { value: 5, left: None, right: None }; -> Option C
  4. Quick Check:

    Leaf node has no children (left and right None) [OK]
Hint: Leaf nodes have left and right as None [OK]
Common Mistakes:
  • Setting left or right to Some(Box::new(Node)) for leaf
  • Confusing struct definition with instance creation
  • Missing Option wrapping for children
3. Given the following tree structure in Rust, what is the depth of node with value 4?
struct Node {
    value: i32,
    left: Option,
    right: Option,
}

let root = Node {
    value: 1,
    left: Some(Box::new(Node {
        value: 2,
        left: Some(Box::new(Node {
            value: 4,
            left: None,
            right: None,
        })),
        right: None,
    })),
    right: Some(Box::new(Node {
        value: 3,
        left: None,
        right: None,
    })),
};
medium
A. 2
B. 0
C. 1
D. 3

Solution

  1. Step 1: Understand depth definition

    Depth is the number of edges from the root to the node.
  2. Step 2: Trace path from root to node 4

    Path: root(1) -> left(2) -> left(4). Number of edges = 2.
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    Depth of node 4 = 2 edges from root [OK]
Hint: Count edges from root to node for depth [OK]
Common Mistakes:
  • Counting nodes instead of edges
  • Confusing depth with height
  • Miscounting path steps
4. The following Rust code attempts to calculate the height of a binary tree node but has a bug. What is the error?
fn height(node: &Option) -> i32 {
    if let Some(n) = node {
        let left_height = height(&n.left);
        let right_height = height(&n.right);
        left_height + right_height + 1
    } else {
        0
    }
}
medium
A. The function should add 2 instead of 1
B. It should return the maximum of left and right heights, not their sum
C. The function should take &Node, not &Option
D. It should return 0 for Some nodes, not null nodes

Solution

  1. Step 1: Understand height calculation logic

    Height is the longest path from node to leaf, so use max(left, right) + 1.
  2. Step 2: Identify bug in code

    Code adds left_height + right_height + 1, which sums both sides incorrectly.
  3. Final Answer:

    It should return the maximum of left and right heights, not their sum -> Option B
  4. Quick Check:

    Height = max(left, right) + 1 [OK]
Hint: Height uses max of children heights, not sum [OK]
Common Mistakes:
  • Summing left and right heights instead of max
  • Confusing height with node count
  • Incorrect base case return value
5. You have a tree where the root is at level 0. If a node is at level 3, what is its depth and what is the height of the subtree rooted at this node if it has no children?
hard
A. Depth = 0, Height = 0
B. Depth = 0, Height = 3
C. Depth = 3, Height = 3
D. Depth = 3, Height = 0

Solution

  1. Step 1: Understand level and depth relationship

    Level and depth both count edges from root; level 0 means root, so level 3 means depth 3.
  2. Step 2: Determine height of leaf node subtree

    A node with no children is a leaf, so its height is 0.
  3. Final Answer:

    Depth = 3, Height = 0 -> Option D
  4. Quick Check:

    Level = Depth = 3; Leaf height = 0 [OK]
Hint: Leaf node height is 0; level equals depth from root [OK]
Common Mistakes:
  • Confusing height with depth
  • Assuming leaf height is 1
  • Mixing level numbering starting at 1
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