1 Star 0 Fork 0

bobshi / lintcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
segment-tree-build.py 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
Bob 提交于 2015-12-13 21:25 . complete the segment-tree-query feature
from data_structure import SegmentTreeNode
class Solution:
# @param start, end: Denote an segment / interval
# @return: The root of Segment Tree
def build(self, start, end):
# write your code here
node = SegmentTreeNode(start,end)
if start > end:
return None
elif start != end:
_leftStart = node.start
_leftEnd = (node.start + node.end)/2
node.left = self.build(_leftStart,_leftEnd)
_rightStart = (node.start + node.end) / 2 + 1
_rightEnd = node.end
node.right = self.build(_rightStart, _rightEnd)
return node
def buildByArray(self, arr):
def setMax(node, arr):
interval = arr[node.start:node.end+1]
# print interval
node.max = max(interval)
if node.left != None:
setMax(node.left, arr)
if node.right != None:
setMax(node.right, arr)
node = self.build(0, len(arr)-1)
setMax(node, arr)
return node
from utils import util
if __name__=='__main__':
solution = Solution()
segmentTree = solution.build(0,3)
util.printSegmentTree(segmentTree)
node = solution.buildByArray([1,4,2,3])
util.printSegmentTree(node)
1
https://gitee.com/bobshi/lintcode.git
git@gitee.com:bobshi/lintcode.git
bobshi
lintcode
lintcode
master

搜索帮助