Serialize and Deserialize Binary Tree - Teeeeeebag/LeetCode GitHub Wiki

  1. Use LinkedList as a global buffer
    Initially, I was thinking what data structure can be used as a global buffer... even think about global str...
public class Codec {

    // Encodes a tree to a single string.
    private void serialize(TreeNode n, StringBuilder sb){
        if(n == null){
            sb.append("null").append("#");
            return;
        } 
        sb.append(n.val).append("#");
        serialize(n.left, sb);
        serialize(n.right, sb);
    }
    public String serialize(TreeNode root) {
        StringBuilder sb = new StringBuilder();
        serialize(root, sb);
        return sb.toString();
    }

    private TreeNode deserialize(LinkedList<String> strs){
        String crt = strs.getFirst();
        strs.removeFirst();
        if (crt.equals("null")){
            return null;
        }
        TreeNode n = new TreeNode(Integer.parseInt(crt));
        n.left = deserialize(strs);
        n.right = deserialize(strs);
        return n;
    }
    // Decodes your encoded data to tree.
    public TreeNode deserialize(String data) {
        LinkedList<String> strs = new LinkedList<>(Arrays.asList(data.split("#")));
        return deserialize(strs);
    }
}
⚠️ **GitHub.com Fallback** ⚠️