题目;请实现两个函数,分别用来序列化和反序列化二叉树
分析:
public class Serialize1 {
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
String Serialize(TreeNode root) {
StringBuilder sb=new StringBuilder();
preOrder(root,sb);
return sb.toString();
}
private void preOrder(TreeNode root, StringBuilder sb) {
if(root==null){
sb.append("#!");
return ;
}
sb.append(root.val+"!");
preOrder(root.left,sb);
preOrder(root.right,sb);
}
TreeNode Deserialize(String str) {
if(str==null||str.length()==0){return null;}
String [] strs=str.split("!");
return deserializeCore(strs);
}
int index=0;
private TreeNode deserializeCore(String[] strs) {
if("#".equals(strs[index])){
index++;
return null;
}else{
TreeNode root =new TreeNode(index);//无论此处为0或者index 都能通过
root.val=Integer.parseInt(strs[index]);
index++;
root.left= deserializeCore(strs);
root.right=deserializeCore(strs);
return root;
}
}
}
感谢:https://blog.csdn.net/qq_27703417/article/details/70958692
&spm=1001.2101.3001.5002&articleId=84991245&d=1&t=3&u=b87bd8fc578c4307b45a68326b8ce110)

被折叠的 条评论
为什么被折叠?



