線段樹的基本實現

2021-10-06 03:47:16 字數 1118 閱讀 2665

線段樹是這樣一種結構,每個節點儲存陣列一部分的和

原陣列為13

57911

對應的線段樹結構如下

根節點是陣列之和,根節點的左孩子是陣列左半部分之和,根節點的右孩子是陣列右半部分數值之和。

//中間點

int mid=

(start+end)/2

;int left_node=

2*node+1;

//左子樹樹根

int right_node=

2*node+2;

//右子樹樹根

build_tree

(arr,tree,left_node,start,mid)

;//遞迴建立左子樹

build_tree

(arr,tree,right_node,mid+

1,end)

;//遞迴建立右子樹

tree[node]

=tree[left_node]

+tree[right_node]

;//合併左右子樹

}int

main()

;int size=6;

int tree[max_len]=;

build_tree

(arr,tree,0,

0,size-1)

;for

(int i=

0;i<

15;i++

)return0;

}結果

線段樹的基本操作

點更新 1 include 點更新2 include 3 include 4 5using namespace std 67 const int n 10000 8 intn,m,a n 9struct node 10tree 4 n 1415 void build int id,int l,int...

用Python實現的基本版的線段樹

class node def init self,x,y self.l x self.r y self.key 0 if x y return p.left.calc x,y elif midreturn p.right.calc x,y else return p.left.calc x,mid ...

基本線段樹

作為乙個常用的資料結構,線段樹怎能不與玄學扯上關係。所以今天要講的是 玄學。所謂線段樹,就是將乙個線段用數軸上的乙個點表示。但是我當初就沒搞懂,所以我決定用我能理解的方法來講。想象有一條線,嗯對,一條線段。將這條線段從中點分開,中點歸左邊。就這樣遞迴,遞迴,遞迴。直到線段長度為1時,return 好...