package problems.medium; import problems.utils.TreeNode; import java.util.Arrays; import java.util.LinkedList; /** * Created by sherxon on 1/3/17. */ public class SerializeandDeserializeBST { // Encodes a tree to a single string. public String serialize(TreeNode root) { if(root==null)return ""; StringBuilder sb= new StringBuilder(); f(root, sb); return sb.substring(1); } void f(TreeNode x, StringBuilder sb){ sb.append(','); if(x==null){ sb.append('#'); return; } sb.append(x.val); f(x.left, sb); f(x.right, sb); } // Decodes your encoded data to tree. public TreeNode deserialize(String s) { if(s.length()==0)return null; String[] a=s.split(","); if(a.length<1)return null; LinkedList<String> linkedList= new LinkedList<>(Arrays.asList(a)); TreeNode root=new TreeNode(Integer.parseInt(linkedList.removeFirst())); m(linkedList, root); return root; } private void m(LinkedList<String> list, TreeNode x) { if(!list.getFirst().equals("#")){ x.left= new TreeNode(Integer.parseInt(list.removeFirst())); m(list, x.left); }else list.removeFirst(); if(!list.getFirst().equals("#")){ x.right= new TreeNode(Integer.parseInt(list.removeFirst())); m(list, x.right); }else list.removeFirst(); } }