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.online,https://www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。