http://www.lintcode.com/en/problem/segment-tree-build/

divide and conquer from bottom up

public SegmentTreeNode build(int start, int end) {
        if (start > end) {
            return null;
        }
        if (start == end) {
            return new SegmentTreeNode(start, end);
        }

        int mid = (start + end) / 2;
        SegmentTreeNode left = build(start, mid);
        SegmentTreeNode right = build(mid + 1, end);

        SegmentTreeNode root = new SegmentTreeNode(left.start, right.end);
        root.left = left;
        root.right = right;

        return root;

    }

results matching ""

    No results matching ""