Menu

Earn Premium with Referrals

Invite your friends and earn Premium rewards through our referral program.

See how it works and start inviting friends.

Segment Tree Patterns
DSA

Segment Tree Patterns

Learn when segment trees are useful for dynamic range queries and updates.

A segment tree stores aggregate answers for ranges in a binary tree so any range can be queried in O(log n) and updated in O(log n).

Think Segment Tree when you see:

  • Range sum/min/max/gcd queries with point updates
  • Range updates + range queries together
  • Queries over dynamic data (prefix sums break here)
  • Counting/inversion problems on ranges

Quick Recognition Cheat Sheet

If you see…Think…
Static array + many range sumsPrefix sums (simpler!)
Updates and range queriesSegment tree
Range update + range queryLazy propagation
Min/max/GCD over changing rangesSegment tree (swap combiner)
“How many elements < x in [l..r]“Merge-sort tree / offline

Pattern Table

PatternTypical QuestionsTrigger
Point UpdateRange Sum Query MutableUpdate one index, query range
Range UpdateRange AdditionAdd to [l..r], query later
Lazy PropagationAssign/add on rangesDefer work with tags

Mental Trigger

Query + Update both needed → Segment Tree. Static data → prefix sum.

Decision Guide

Only prefix queries, no updates

   Prefix Sum array  ← stop, don't over-engineer

Point updates + range aggregate

   Basic Segment Tree (or Fenwick if just sums)

Range updates + range aggregates

   Segment Tree + Lazy Propagation

Immutable array + O(1) min/max queries

   Sparse Table (see Range Query section)

My Private Notes

Notes are auto-saved locally to this device.