コード例 #1
0
ファイル: IntervalTree.py プロジェクト: LordPatriot/itree
    def build(self, array):
        if len(array) > 0:
            # counting the median, which is the key
            median = IntervalTree.get_median_point(self, array)
            # current Node
            n = Node(median)
            left = []
            right = []
            overlap = []

            for i in range(0, len(array)):
                if array[i].begin <= median <= array[i].end:
                    overlap.append(array[i])
                elif array[i].end < median:
                    left.append(array[i])
                elif array[i].begin > median:
                    right.append(array[i])

            n.overlap_begin_sort = sorted(overlap, key=operator.attrgetter("begin"))
            n.overlap_end_sort = sorted(overlap, key=operator.attrgetter("end"), reverse=True)

            if self.root is None:
                self.root = n

            n.left = self.build(left)
            n.right = self.build(right)

            return n
        else:
            return None