// Serialization is the process of converting a data structure or object into a sequence of bits
// so that it can be stored in a file or memory buffer,
// or transmitted across a network connection link to be reconstructed later in the same or another computer environment.

// Design an algorithm to serialize and deserialize a binary tree.
// There is no restriction on how your serialization/deserialization algorithm should work.
// You just need to ensure that a binary tree can be serialized to a string
// and this string can be deserialized to the original tree structure.

// For example, you may serialize the following tree

//     1
//    / \
//   2   3
//      / \
//     4   5

// as "[1,2,3,null,null,4,5]", just the same as how LeetCode OJ serializes a binary tree.
// You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.



// Serialization is the process of converting a data structure or object into a sequence of bits
// so that it can be stored in a file or memory buffer,
// or transmitted across a network connection link to be reconstructed later in the same or another computer environment.

// Design an algorithm to serialize and deserialize a binary tree.
// There is no restriction on how your serialization/deserialization algorithm should work.
// You just need to ensure that a binary tree can be serialized to a string
// and this string can be deserialized to the original tree structure.

// For example, you may serialize the following tree

//     1
//    / \
//   2   3
//      / \
//     4   5

// as "[1,2,3,null,null,4,5]", just the same as how LeetCode OJ serializes a binary tree.
// You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.


var serializeHelper = function(root,lst) {
    if (!root) { lst.push("#"); }
    else {
        lst.push(root.val);
        serializeHelper(root.left,lst);
        serializeHelper(root.right,lst);
    }
};
var serialize = function(root) {
    var lst=[];
    serializeHelper(root,lst);
    return lst.toString();
};
var deserializeHelper = function(lst) {
    if (lst.length<1) { return null; }
    var val=lst.splice(0,1);
    if (val[0]==="#") { return null; }
    var root=new TreeNode(parseInt(val));
    root.left=deserializeHelper(lst);
    root.right=deserializeHelper(lst);
    return root;
};
var deserialize = function(data) {
    if(!data||data.length===0) { return null; }
    return deserializeHelper(data.split(","));
};

add solution