牛客(61)序列化二叉树

//    题目描述
//    请实现两个函数,分别用来序列化和反序列化二叉树

    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;

        }

    }
    String Serialize(TreeNode root) {
        StringBuilder stringBuilder = new StringBuilder();
        doSerialize(root,stringBuilder);
        return stringBuilder.toString();
    }
    public void doSerialize(TreeNode root,StringBuilder stringBuilder){
        if (root==null){
            stringBuilder.append("#,");
            return;
        }
        stringBuilder.append(root.val);
        stringBuilder.append(",");
        doSerialize(root.left,stringBuilder);
        doSerialize(root.right,stringBuilder);
    }
    TreeNode Deserialize(String str) {
        if (str==null){
            return null;
        }
        String[] strings = str.split(",");
        return doDeserialize(strings);
    }
    int index = -1;
    public TreeNode doDeserialize(String[] str){
        index ++;
        if (!str[index].equals("#")){
            TreeNode node = new TreeNode(Integer.valueOf(str[index]));

            node.left = doDeserialize(str);

            node.right= doDeserialize(str);
            return node;
        }
        return null;
    }

 

posted @ 2018-06-04 10:16  楷兵  阅读(170)  评论(0编辑  收藏  举报