Lintcode 線段樹的構造

2022-06-22 17:33:13 字數 1016 閱讀 9287

線段樹是一棵二叉樹,他的每個節點包含了兩個額外的屬性startend用於表示該節點所代表的區間。start和end都是整數,並按照如下的方式賦值:

yes說明線段樹(又稱區間樹), 是一種高階資料結構,他可以支援這樣的一些操作:

見百科:

線段樹區間樹

樣例比如給定start=1, end=6,對應的線段樹為:

[1,  6]

/ \

[1, 3] [4, 6]

/ \ / \

[1, 2] [3,3] [4, 5] [6,6]

/ \ / \

[1,1] [2,2] [4,4] [5,5]

思路:建立線段樹,也是遵循樹的特性,採用遞迴的方法建樹;

首先明確基準情形,然後,利用線段樹的性質,遞迴建樹!

/**

* definition of segmenttreenode:

* class segmenttreenode

* }*/class solution

segmenttreenode* phead=new segmenttreenode(start,end);

if (start==end)

int mid=start+(end-start)/2;

phead->left=build(start,mid);

phead->right=build(mid+1,end);

return phead;

}};

lintcode 201 線段樹的構造

線段樹是一棵二叉樹,他的每個節點包含了兩個額外的屬性start和end用於表示該節點所代表的區間。start和end都是整數,並按照如下的方式賦值 實現乙個build方法,接受 start 和 end 作為引數,然後構造乙個代表區間 start,end 的線段樹,返回這棵線段樹的根。您在真實的面試中...

lintcode 439 線段樹的構造 II

線段樹是一棵二叉樹,他的每個節點包含了兩個額外的屬性start和end用於表示該節點所代表的區間。start和end都是整數,並按照如下的方式賦值 對於給定陣列設計乙個build方法,構造出線段樹 說明wiki segment tree interval tree 樣例給出 3,2,1,4 線段樹將...

線段樹的查詢 LintCode

對於乙個有n個數的整數陣列,在對應的線段樹中,根節點所代表的區間為0 n 1,每個節點有乙個額外的屬性max,值為該節點所代表的陣列區間start到end內的最大值。為segmenttree設計乙個 query 的方法,接受3個引數root,start和end,線段樹root所代表的陣列中子區間 s...