这道题是当时字节的一道面试题,对二叉树进行序列化和反序列化
序列化可以利用前序,中序,后序遍历均可;反序列的时候要用相同的规则即可
public class Codec {
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
return rserialize(root,"");
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
List<String> list = new LinkedList<>(Arrays.asList(data.split(",")));
return rdeserialize(list);
}
public String rserialize(TreeNode root,String str){
if(root==null) {
str+="Null," ;
return str;
}
str += root.val+",";
str = rserialize(root.left,str);
str = rserialize(root.right,str);
return str;
}
public TreeNode rdeserialize(List<String> list){
if(list.get(0).equals("Null")){
list.remove(0);
return null;
}
TreeNode root = new TreeNode(Integer.valueOf(list.get(0)));
list.remove(0);
root.left = rdeserialize(list);
root.right = rdeserialize(list);
return root;
}
}