序列化二叉树

String Serialize(TreeNode root) {
    if(root==null){
        return "#";
    }
    return root.val+" "+Serialize(root.left)+" "+Serialize(root.right);
}

//反序列化:将字符串转化为二叉树
//注意 " " 和 "#"

private String deserializeStr;

TreeNode Deserialize(String str) {
    deserializeStr=str;
    return Deserialize();
}

private TreeNode Deserialize(){
    if (deserializeStr.length() == 0)
        return null;
    int index = deserializeStr.indexOf(" ");
    
    //TODO:
    //如果 index==-1 ,说明 deserializeStr 中没有出现" ",deserializeStr 表示一个节点的值
    //如果 index=!-1,说明 deserializeStr[0,index-1] 是节点值
    String node = index==-1?deserializeStr:deserializeStr.substring(0, index);
    deserializeStr = index == -1 ? "" : deserializeStr.substring(index + 1); 
    //从 " "的下一个位置开始
    if("#".equals(node)){
        return null;
    }
    int val = Integer.parseInt(node);
    TreeNode root = new TreeNode(val);
    root.left =Deserialize();
    root.right=Deserialize();
    return root;
}

https://www.mianshi.onlinehttps://www.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝