import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
int inf=0x7fffffff;
String Serialize(TreeNode root) {
if(root==null)return "";
String ans="";
LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
queue.push(root);
while(!queue.isEmpty()){
TreeNode temp= queue.removeFirst();
if(temp.val!=inf){
if(temp.left!=null){
queue.addLast(temp.left);
}else{
queue.addLast(new TreeNode(inf));
}
if(temp.right!=null){
queue.addLast(temp.right);
}else{
queue.addLast(new TreeNode(inf));
}
ans=ans+temp.val+',';
}
else{
ans=ans+inf+',';
}
}
// System.out.println(ans);
return ans;
}
TreeNode Deserialize(String str) {
if(str=="")return null;
LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
int index=0;
String[] list=str.split(",");
TreeNode root=new TreeNode( Integer.parseInt(list[index++]));
queue.addLast(root);
while(!queue.isEmpty()){
TreeNode temp= queue.removeFirst();
if(temp.val!=inf){
// queue.addLast(new TreeNode( Integer.parseInt(list[index++])));
TreeNode left=new TreeNode( Integer.parseInt(list[index++]));
TreeNode right=new TreeNode( Integer.parseInt(list[index++]));
temp.left=left;
temp.right=right;
if(left.val!=inf)
queue.addLast(left);
else
temp.left=null;
if(right.val!=inf)
queue.addLast(right);
else
temp.right=null;
}
}
return root;
}
}
思路为,先使用层序遍历把原本的二叉树转化为string,然后使用层序遍历把原本的string变为二叉树。
该博客介绍了一种将二叉树通过层序遍历转换为字符串的方法,并展示了如何利用相同策略逆向重构二叉树。通过实例展示了如何实现`TreeNode`类和`Solution`类中的序列化与反序列化操作。
210

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



