LintCode:线段树的构造 II这里写链接内容
"""
Definition of SegmentTreeNode:
class SegmentTreeNode:
def __init__(self, start, end, max):
self.start, self.end, self.max = start, end, max
self.left, self.right = None, None
"""
class Solution:
# @oaram A: a list of integer
# @return: The root of Segment Tree
def build(self, A):
# write your code here
if A == []:
return None
self.A = A
self.root = SegmentTreeNode(0, len(A)-1, max(A))
self.build_tree(self.root)
return self.root
def build_tree(self, node):
if node.start == node.end or node == None:
return
node.left = SegmentTreeNode(node.start, (node.start+node.end)/2, max(self.A[node.start:(node.start+node.end)/2 + 1]))
node.right = SegmentTreeNode((node.start+node.end)/2 + 1, node.end, max(self.A[(node.start+node.end)/2 + 1:node.end + 1]))
self.build_tree(node.left)
self.build_tree(node.right)