線段樹是這樣一種結構,每個節點儲存陣列一部分的和
原陣列為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 好...