Segment Tree Build
Question
The structure of Segment Tree is a binary tree which each node has two attributes start
and end
denote an segment / interval.
start
and end
are both integers, they should be assigned in following rules:
The root's start and end is given by
build
method.The left child of node A has
start=A.left, end=(A.left + A.right) / 2
.The right child of node A has
start=(A.left + A.right) / 2 + 1, end=A.right
.if start equals to end, there will be no children for this node.
Implement a build
method with two parameters start and end, so that we can create a corresponding segment tree with every node has the correct start and end value, return the root of this segment tree.
Clarification
Segment Tree (a.k.a Interval Tree) is an advanced data structure which can support queries like:
which of these intervals contain a given point
which of these points are in a given interval
See wiki:
Example Given start=0, end=3. The segment tree will be:
Given start=1, end=6. The segment tree will be:
Analysis
求出中间值,再分别对left,right进行build,递归调用build,生成子树。
Solution
Last updated