玩轉數據結構--線段樹

爲什麼要使用線段樹

最經典的線段樹:區間染色
有一面牆,長度爲n,每次選擇一段牆染色。
在這裏插入圖片描述
m次操作後,我們可以看見多少種顏色?
m次操作後,我們可以在[i,j]區間內看見多少種顏色?

使用數組實現 使用線段樹
染色操作(更新區間) O(n) O(logn)
查詢操作(查詢區間) O(n) O(logn)

另一類問題:區間查詢
在這裏插入圖片描述
查詢一個區間[i,j]的最大值,最小值,或者區間數字和
實質:基於區間的統計查詢
2017年註冊用戶中消費最高的用戶?消費最少的用戶?(動態更新)

區間是固定的,只是區間中的元素不一樣,所以可以直接用靜態數組。
在這裏插入圖片描述
線段樹不一定是完全二叉樹,但依然是一顆平衡二叉樹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章