package RandomPractice;
import java.util.ArrayList;
import util.BTNode;
public class DeSerializationBinarySearchTree {
public static void serialize(BTNode root, ArrayList<Integer> list){
if(root == null)
return;
else{
list.add(root.value);
serialize(root.left, list);
serialize(root.right, list);
}
}
public static BTNode deserialize(int min, int max, ArrayList<Integer> list){
if(list.size() == 0)
return null;
int i = list.get(0);
if(i > min && i < max){
list.remove(0);
BTNode root = new BTNode(i);
root.left = deserialize(min, i, list);
root.right = deserialize(i, max, list);
return root;
} else
return null;
}
public static void main(String[] args){
BTNode root1 = new BTNode(4, null, null);
root1.left = new BTNode(2, null, null);
root1.right = new BTNode(5, null, null);
root1.left.left = new BTNode(1, null, null);
root1.left.right = new BTNode(3, null, null);
ArrayList<Integer> list = new ArrayList<Integer>();
serialize(root1, list);
for(int i = 0; i < list.size(); i++)
System.out.print(list.get(i) + " ");
BTNode root = deserialize(Integer.MIN_VALUE, Integer.MAX_VALUE, list);
}
}