線段樹的入門小結

2021-07-30 11:08:24 字數 787 閱讀 3495

首先我們應該需要明白線段樹可以解決的問題,如 求解陣列區間之和,更新區間等

如果使用暴力的方法會超時,這樣就引入了線段樹這一資料結構線段樹的本質是一顆平衡二叉樹

線段樹的基本性質如下:父親的區間是[a,b] (c=(a+b)/2)左兒子的區間是[a,c],右兒子的區間是[c+1,b],線段樹需要的空間為陣列大小的四倍。

以1到10的區間舉例,構造的線段樹如下

線段樹演算法包括的主要的函式有三個(和樹狀陣列的一樣哎

build(建樹函式), update(更新函式), query(查詢區間和函式)

先定義下樹的結構體

struct node   //這就是一棵樹

tree[n];

build函式

void build(int l,int r,int step)

update函式

void update(int l, int r, int value, int step)

}

query函式

int query(int l, int r,int step)

這三個函式就是線段樹的精華了2333

幫助大家理解寫幾道線段樹的模板題更好的理解模板

經典入門題hdu1166-敵兵布陣

線段樹入門小結

從劉汝佳的書中得知,這種資料結構在學術界沒有統一的術語,但線段樹是最常見的叫法。其他叫法包括區間樹 interval tree 範圍樹 range tree 等,但這些屬於在特定的場合 如計算幾何 中有著特殊的意義 怎麼叫看讀者的心情,以下統一用線段樹稱呼。線段樹是一棵二叉樹,它的左右兒子也都是一棵...

線段樹小結

按照牛的部落格寫了幾道題,刷了一周效果不錯 1.複習鞏固了以前的知識 2.還有改正了一些寫線段樹毛病 3.改正了在弱資料的影響下的錯誤方法ac的題目 4.還學到了線段樹新的型別題 總體效果不錯,總結一下 poj 2892 最直觀的是平衡樹,用樹狀陣列的findk的功能更酷一些,線段樹找第k小也可以,...

線段樹小結

實際上還是稱為區間樹更好理解一些。樹 是一棵樹,而且是一棵二叉樹。線段 樹上的每個節點對應於乙個線段 還是叫 區間 更容易理解,區間的起點和終點通常為整數 同一層的節點所代表的區間,相互不會重疊。同一層節點所代表的區間,加起來是個連續的區間。葉子節點的區間是單位長度,不能再分了。線段樹的深度不超過l...