DIGITAL GURU
Java DSA Portfolio

Segment Tree (Build, Point Update, Range Query)

Master Segment Trees for O(log N) Range Minimum/Sum Queries and Point/Lazy Updates.

Anuj Kumar Singh Written by Anuj Kumar Singh (Lead Engineer, 13+ yrs exp) 5 min read Verified Spring Boot 3+ Guide

Formal Definition & Classification Types

Definition: Segment Trees and Fenwick Trees (Binary Indexed Trees) are advanced tree data structures designed to answer range queries (Sum, Min, Max, GCD) and process element updates in $O(\log N)$ logarithmic time.

Real-World Analogy

A Segment Tree is a tournament bracket—each leaf is a player, and internal node branches store the winner (Min/Max/Sum) of their respective subtree segment.

Segment Tree Architecture

Full binary tree storing interval segment summaries. Array size $4N$.

Production Code Example:

SegmentTree.java
public class SegmentTree {
    private int[] tree, arr;
    public SegmentTree(int[] input) {
        arr = input;
        tree = new int[4 * input.length];
        build(0, 0, input.length - 1);
    }
    private void build(int node, int start, int end) {
        if (start == end) { tree[node] = arr[start]; return; }
        int mid = start + (end - start) / 2;
        build(2 * node + 1, start, mid);
        build(2 * node + 2, mid + 1, end);
        tree[node] = tree[2 * node + 1] + tree[2 * node + 2];
    }
}

Key Complexity & Algorithmic Takeaways:

When implementing Segment Tree (Build, Point Update, Range Query) in coding interviews and production applications, keep these core guidelines in mind:

  • Time Complexity Analysis: Always evaluate best-case, average-case, and worst-case time complexities ($O(1)$, $O(\log n)$, $O(n)$, $O(n \log n)$, $O(n^2)$).
  • Space Complexity & Memory Bounds: Account for auxiliary memory usage, call stack frame recursion overhead, and heap allocations.
  • Edge Cases & Validation: Test empty inputs, null pointers, single-element collections, duplicate values, and integer overflow bounds.
  • Optimal vs Naive Solutions: Start with a clear brute-force solution, then optimize using techniques like Hashing, Two Pointers, Windowing, or Dynamic Programming.

Summary Takeaway:

Mastering Segment Tree (Build, Point Update, Range Query) provides the foundational problem-solving skills needed to pass technical coding interviews at top tech companies and write ultra-performant software systems.

Range Updates

Use **Lazy Propagation** to perform range updates in $O(\log N)$ time.