题目描述:
??实现两个函数。分别用来序列化和反序列化二叉树
思路分析:
??序列化指的就是,将二叉树转化为字符串序列,反序列化指的就是将字符串转化为二叉树。我们可以用先序遍历将二叉树转化为字符串,遇见节点为空记做 #!,不为空记做 num!。同样的我们可以用先序遍历的方法重建二叉树。
代码:
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 "#!";
String res="";
res=res+root.val+"!";
res=res+Serialize(root.left);
res=res+Serialize(root.right);
return res;
}
public TreeNode Deserialize(String str){
Queue<String>q=new LinkedList<>();
String []s=str.split("!");
for(int i=0;i<s.length;i++){
q.offer(s[i]);
}
return reconstructTree(q);
}
public TreeNode reconstructTree(Queue<String>q) {
String s=q.poll();
if(s.equals("#"))
return null;
TreeNode pRoot=new TreeNode(Integer.valueOf(s));
pRoot.left=reconstructTree(q);
pRoot.right=reconstructTree(q);
return pRoot;
}
}
原文地址:https://www.cnblogs.com/yjxyy/p/10961309.html
时间: 2024-10-09 12:22:06