-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinimumSegmentTreeByTree.java
More file actions
48 lines (44 loc) · 1.59 KB
/
MinimumSegmentTreeByTree.java
File metadata and controls
48 lines (44 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class MinimumSegmentTreeByTree extends SegmentTreeByTree {
/**
* Constructor for creating a Segment Tree from an input array
* @param arr Input array for which Segment Tree needs to be constructed
*/
public MinimumSegmentTreeByTree(int[] arr){
super(arr);
}
/**
* Queries the Segment Tree for the Minimum value in the given range.
* @param left Start index of the query range
* @param right End index of the query range
* @return Minimum value in the given range
*/
@Override
public int queryRange(int left, int right) {
return queryRangeHelper(this.root, left, right).getMin();
}
@Override
/**
* Returns a string representation of the segment tree.
* @return a string representation of the segment tree
*/
public String toString() {
String minTree = " [";
return traverse_preorder(this.root, minTree) +" ] ";
}
/**
* Helper function
* Recursively traverses a tree from a given node and writes/logs the nodes' min in the taken path pre-order.
*
* @param node starting node (current node recursively)
*/
protected String traverse_preorder(SegmentTreeNode node, String st) {
if (node == null) {
return st;
}
st = st+" " + String.valueOf(node.getMin());
// add to string/char -> node.getMin();
st = traverse_preorder((SegmentTreeNode)node.leftChild, st);
st = traverse_preorder((SegmentTreeNode)node.rightChild, st);
return st;
}
}