線段樹學習筆記

2021-09-22 10:24:27 字數 451 閱讀 3161

線段樹的構造

void build(node* cur,int l,int r)

else

cur->leftchild=cur->rightchild=null;

}//線段樹的查詢

int query(node* cur,int l,int r)

}//線段樹的延遲修改

void change(node* cur,int x,int delta)

}//線段樹的查詢

void change(node* cur,int l,int r,int delta)

else

}其中,延遲資訊向下傳的方法update可以這麼寫:

void update(node* cur)

//查詢過程也需要進行相應的修改

int query(node* cur,int l,int r)

}

線段樹學習筆記

線段樹是一種 二叉搜尋樹 與區間樹 相似,它將乙個區間劃分成一些單元區間,每個單元區間對應線段樹中的乙個葉結點。使用線段樹可以快速的查詢某乙個節點在若干條線段中出現的次數,時間複雜度為o logn 而未優化的 空間複雜度 為2n,因此有時需要離散化讓空間壓縮。以下筆記摘自lcomyn神犇部落格 1....

線段樹學習筆記

本文筆記在參考一步一步理解線段樹 tenos的基礎上形成 線段樹,也是二叉搜尋樹的一種,是基於陣列,但是優於陣列的一種資料結構。同時結合預處理 時間複雜度一般在o n 使得從原來陣列的o n 的查詢和更新複雜度降到了o logn 在處理很大資料量的資料更新和查詢最值方面變得簡單,值得一提的是,它的構...

線段樹學習筆記

線段樹是一種維護區間的資料結構,且滿足二叉樹的全部性質 下圖是一棵維護區間 1 6 1,6 的線段樹 格式 idl ri dl r我們可以發現,對於每個節點 k k 來說,其左節點編號為2k role presentation style position relative 2k2 k,右節點編號為...