LintCode:线段树的构造

LintCode:线段树的构造

""" Definition of SegmentTreeNode: class SegmentTreeNode: def __init__(self, start, end): self.start, self.end = start, end self.left, self.right = None, None """

class Solution: 
    # @param start, end: Denote an segment / interval
    # @return: The root of Segment Tree
    def build(self, start, end):
        # write your code here
        if start > end:
            return None
        root = SegmentTreeNode(start, end)
        self.pre_order(root)
        return root

    def pre_order(self, root):
        if root.start == root.end:
            return
        root.left = SegmentTreeNode(root.start, (root.start + root.end)/2)
        root.right = SegmentTreeNode((root.start + root.end)/2 + 1, root.end)
        self.pre_order(root.left)
        self.pre_order(root.right)

你可能感兴趣的:(LintCode:线段树的构造)