/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
String Serialize(TreeNode node) {
if(node==null)
return "#!";
StringBuffer stb=new StringBuffer();
stb.append(node.val+"!");
stb.append(Serialize(node.left));
stb.append(Serialize(node.right));
return stb.toString();
}
TreeNode Deserialize(String str) {
//将具体的值分割存到数组当中
String[] data=str.split("!");
Queue<String> queue=new LinkedList<String>();
//让其入队列
for(String s1:data){
queue.add(s1);
}
return reConPreOrder(queue);
}
TreeNode reConPreOrder(Queue<String> queue){
String n=queue.poll();
if(n.equals("#"))
return null;
TreeNode result=new TreeNode(Integer.valueOf(n));
result.left=reConPreOrder(queue);
result.right=reConPreOrder(queue);
return result;
}
}
以先序遍历的方式序列化二叉树与反序列化二叉树
最新推荐文章于 2024-06-17 16:18:02 发布