Skip to content

Instantly share code, notes, and snippets.

@madhur
Created May 25, 2019 09:05
Show Gist options
  • Select an option

  • Save madhur/ee94eb38f77a89374f020ac4cdf456e8 to your computer and use it in GitHub Desktop.

Select an option

Save madhur/ee94eb38f77a89374f020ac4cdf456e8 to your computer and use it in GitHub Desktop.
Binary tree serialization and de-serialization
public String serializeTree(TreeNode root){
StringBuilder sb = new StringBuilder();
serializeTreeHelper(root,sb);
if(sb.length() > 0) sb.deleteCharAt(0);
return sb.toString();
}
private StringBuilder serializeTreeHelper(TreeNode t, StringBuilder sb){
if(t == null) sb.append(",null");
else {
sb.append(","+t.data);
serializeTreeHelper(t.left, sb);
serializeTreeHelper(t.right, sb);
}
return sb;
}
public TreeNode restoreTree(String str){
System.out.println(str);
String[] nodesSplit = str.split(",");
LinkedList<String> nodesList = new LinkedList<>(Arrays.asList(nodesSplit));
return restoreTreeHelper(nodesList);
}
public TreeNode restoreTreeHelper(LinkedList<String> nodes){
String nodeDataStr = nodes.remove();
if(nodeDataStr.equals("null")) return null;
TreeNode t = new TreeNode(Integer.valueOf(nodeDataStr));
t.left = restoreTreeHelper(nodes);
t.right = restoreTreeHelper(nodes);
return t;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment