序列化二叉树

题目链接

序列化

  1. 先序遍历
  2. 如果遇到空节点返回“#!”
  3. 如果遇到不是空节点 str加入“var!”+左子树返回+右子树返回

反序列化

  1. 依次访问每一个数,按照先序遍历构建二叉树。
  2. 如果为#直接返回null
  3. 如果为val 新建一个节点值为val 左子树等于左子树构建的树右子树为右子树构建的数

    注意

    其实第一遍就做对了 但是为什么通不过呢??

  4. 全局变量我用了static 但是index是不可以用static的

  5. 调用函数我也用了 static 也是要去掉
public class Solution {
    public  int index = -1;
    String Serialize(TreeNode root) {
       if(root==null){
            return "#,";
        }
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(root.val+",");
        stringBuffer.append(Serialize(root.left));
        stringBuffer.append(Serialize(root.right));
        return stringBuffer.toString();
  }
    TreeNode Deserialize(String str) {
        String[] buffer = str.split(",");
        TreeNode root= DesHelper(buffer,str.length());
        return root;

  }
     public  TreeNode DesHelper(String[] buffer,int length){
        index++;
        if(index>=buffer.length){
            return null;
        }
        TreeNode cur = null;;
        if(buffer[index].charAt(0)=='#'){
            cur = null;

            return null;
        }

        cur = new TreeNode(new Integer(buffer[index]));

        cur.left = DesHelper(buffer,length);
        cur.right = DesHelper(buffer,length);
        return cur;     
    }
}

你可能感兴趣的:(序列化二叉树)