package com.interview.tree;
class Index{
int index;
}
/**
* http://www.geeksforgeeks.org/construct-bst-from-given-preorder-traversa/
* Test case
* empty array
* 1,2 or more elements in the array
*/
public class ConstructBSTFromPreOrderArray {
public Node toBST(int preorder[]){
Index index = new Index();
return toBST(preorder,Integer.MIN_VALUE,Integer.MAX_VALUE,index);
}
//stack based version
public Node toBSTIterative(int preorder[]){
return null;
}
private Node toBST(int preorder[],int min, int max,Index index){
if(index.index >= preorder.length){
return null;
}
if(preorder[index.index] < min || preorder[index.index] >= max){
return null;
}
Node node = new Node();
node.data = preorder[index.index];
index.index++;
node.left = toBST(preorder,min,node.data, index);
node.right = toBST(preorder,node.data,max,index);
return node;
}
public static void main(String args[]){
int preorder[] = {10,5,1,7,40,50};
ConstructBSTFromPreOrderArray poa = new ConstructBSTFromPreOrderArray();
Node root = poa.toBST(preorder);
TreeTraversals tt = new TreeTraversals();
tt.preOrder(root);
System.out.println();
tt.inOrder(root);
}
}