题解 | #序列化二叉树#
序列化二叉树
https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84
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 {
String Serialize(TreeNode root) {
if(root==null){
return null;
}
Queue<TreeNode> queue=new LinkedList<>();
String res="";
queue.add(root);
TreeNode cur=null;
String empty="";
while(!queue.isEmpty()){
cur=queue.poll();
if(cur==null){
empty=empty+"#";
}else{
res=res+empty+String.valueOf(cur.val)+"_";
empty="";
queue.add(cur.left);
queue.add(cur.right);
}
}
//System.out.println(res);
return res;
}
TreeNode Deserialize(String str) {
if(str==null){
return null;
}
int n=str.length();
Queue<Integer> queue=new LinkedList<>();
Integer num=0;
//TreeNode root=;
for(int i=0;i<n;i++){
if(str.charAt(i)=='_'){
queue.add(num);
num=0;
}else if(str.charAt(i)=='#'){
queue.add(null);
}else{
num=num*10+str.charAt(i)-'0';
}
}
Queue<TreeNode> trees=new LinkedList<>();
TreeNode root=new TreeNode(queue.poll());
TreeNode cur= null;
trees.add(root);
while(!queue.isEmpty()){
cur=trees.poll();
num=queue.poll();
if(num!=null){
TreeNode left=new TreeNode(num);
cur.left=left;
trees.add(left);
}
if(!queue.isEmpty()){
num=queue.poll();
if(num!=null){
TreeNode right=new TreeNode(num);
cur.right=right;
trees.add(right);
}
}
}
return root;
}
}
阿里云成长空间 763人发布
