题解 | #序列化二叉树#
序列化二叉树
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 "";
StringBuilder str = new StringBuilder();
int INF = 1000000;
TreeNode emptyNode = new TreeNode(INF);
TreeNode temp = null;
// boolean bool;
if(root != null){
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
temp = queue.poll();
if(temp.equals(emptyNode)){
str.append("#").append(",");
}else{
str.append(Integer.toString(temp.val)).append(",");
if(!(temp.left == null && temp.right == null&&queue.isEmpty())){
queue.offer(temp.left==null?emptyNode:temp.left);
queue.offer(temp.right==null?emptyNode:temp.right);
}
}
}
}
return str.toString();
}
TreeNode Deserialize(String str) { //将字符串反序列化为二叉树
if(str.length() == 0)
return null;
String[] string = str.split(",");
Queue<TreeNode> queue = new LinkedList<TreeNode>();
TreeNode temp = new TreeNode(Integer.parseInt(string[0]));
TreeNode head = temp;
queue.offer(temp);
for(int i = 1 ; i < string.length; i=i+2){
temp = queue.poll();
if(!string[i].equals("#")){
temp.left = new TreeNode(Integer.parseInt(string[i]));
queue.offer(temp.left);
}else{
temp.left = null;
}
if(!string[i+1].equals("#")){
temp.right = new TreeNode(Integer.parseInt(string[i+1]));
queue.offer(temp.right);
}else{
temp.right = null;
}
}
return head;
}
}
美的集团公司福利 863人发布
查看1道真题和解析