题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.*;
public class Solution {
String Serialize(TreeNode root) {
if(root==null)
return "#!";
String res = root.val + "!";
res += Serialize(root.left);
res += Serialize(root.right);
return res;
}
TreeNode Deserialize(String str) {
if(str==null || str.length()<2) return null;
String[] strArr = str.split("!");
Queue<String> queue = new LinkedList<>();
for(String s:strArr){
queue.offer(s);
}
return reconTree(queue);
}
TreeNode reconTree(Queue<String> queue){
String s = queue.poll();
TreeNode root = null;
if("#".equals(s)){
return root;
}
else{
root = new TreeNode(Integer.valueOf(s));
root.left = reconTree(queue);
root.right = reconTree(queue);
}
return root;
}
}