2["1~4 (2)"] 1 --> 3["5~7 (3)"] 2 --> 4["1~2 (4)"] 2 --> 5["3~4 (5)"] 4 --> 8["1 (8)"] 4 --> 9["2 (9)"] 5 --> 10["3 (10)"] 5 --> 11["4 (11)"] 3 --> 6["5~6 (6)"] 3 --> 7["7 (7)"] 6 --> 12["5 (12)"] 6 --> 13["6 (13)"] "> 2["1~4 (2)"] 1 --> 3["5~7 (3)"] 2 --> 4["1~2 (4)"] 2 --> 5["3~4 (5)"] 4 --> 8["1 (8)"] 4 --> 9["2 (9)"] 5 --> 10["3 (10)"] 5 --> 11["4 (11)"] 3 --> 6["5~6 (6)"] 3 --> 7["7 (7)"] 6 --> 12["5 (12)"] 6 --> 13["6 (13)"] "> 2["1~4 (2)"] 1 --> 3["5~7 (3)"] 2 --> 4["1~2 (4)"] 2 --> 5["3~4 (5)"] 4 --> 8["1 (8)"] 4 --> 9["2 (9)"] 5 --> 10["3 (10)"] 5 --> 11["4 (11)"] 3 --> 6["5~6 (6)"] 3 --> 7["7 (7)"] 6 --> 12["5 (12)"] 6 --> 13["6 (13)"] ">
graph TD
  1["1~7 (1)"] --> 2["1~4 (2)"]
  1 --> 3["5~7 (3)"]
  2 --> 4["1~2 (4)"]
  2 --> 5["3~4 (5)"]
  4 --> 8["1 (8)"]
  4 --> 9["2 (9)"]
  5 --> 10["3 (10)"]
  5 --> 11["4 (11)"]
  3 --> 6["5~6 (6)"]
  3 --> 7["7 (7)"]
  6 --> 12["5 (12)"]
  6 --> 13["6 (13)"]
  

세그먼트 트리의 구조.

graph TD
  1["1~6 (1)"] --> 2["1~3 (2)"]
  1 --> 3["4~6 (3)"]
  2 --> 4["1~2 (4)"]
  2 --> 5["3 (5)"]
  4 --> 8["1 (8)"]
  4 --> 9["2 (9)"]
  3 --> 6["4~5 (6)"]
  3 --> 7["6 (7)"]
  6 --> 12["4 (12)"]
  6 --> 13["5 (13)"]
  

세그먼트 그래프의 (잘 알려진) 재귀 구현이 4*N 만큼의 메모리를 필요로 하는 이유