線段樹 區間樹

2021-10-02 21:23:47 字數 1780 閱讀 7325

每乙個節點儲存的是乙個區間中相應統計值

// 在treeindex的位置建立表示區間[l...r]的線段樹

private void buildsegmenttree

(int treeindex, int l, int r)

int lefttreeindex =

leftchild

(treeindex)

; int righttreeindex =

rightchild

(treeindex)

;// int mid = (l + r) / 2;

int mid = l +

(r - l)/2

;buildsegmenttree

(lefttreeindex, l, mid)

;buildsegmenttree

(righttreeindex, mid +

1, r)

; tree[treeindex]

= merger.

merge

(tree[lefttreeindex]

, tree[righttreeindex]);

} public int getsize()

public e get

(int index)

// 返回完全二叉樹的陣列表示中,乙個索引所表示的元素的左孩子節點的索引

private int leftchild

(int index)

// 返回完全二叉樹的陣列表示中,乙個索引所表示的元素的右孩子節點的索引

private int rightchild

(int index)

// 返回區間[queryl, queryr]的值

public e query

(int queryl, int queryr)

// 在以treeindex為根的線段樹中[l...r]的範圍裡,搜尋區間[queryl...queryr]的值

private e query

(int treeindex, int l, int r, int queryl, int queryr)

@override

public string tostring()

res.

(']');

return res.

tostring();}}

線段樹(區間樹)

目錄 為什麼要使用線段樹 什麼是線段樹 線段樹融合介面 線段樹實現 線段樹例題 融合介面 author administrator param public inte ce merger package com.suanfa.segmenttree 線段樹 區間樹 author administra...

區間樹和線段樹

注意 區間樹和線段樹不一樣哦,線段樹是一種特殊的區間樹。區間樹 區間樹是在紅黑樹基礎上 進行擴充套件得到的支援以區間為元素的動態集合的操作,其中每個節點的關鍵值是區間的左端點。通過建立這種特定的結構,可是使區間的元素的查詢和插入都可以在o lgn 的時間內完成。相比於基礎的紅黑樹資料結構,增加了乙個...

線段樹 區間合併

hdu 1540 tunnel wa re 詳細見 include include include include include define max 50010 define lson l,m,k 1 define rson m 1,r,k 1 1 using namespace std typ...