/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/publicclassCodec{public StringBuilder rserialize(TreeNode root, StringBuilder sb){if(root == null) sb.append("null,");else{
sb.append(root.val);
sb.append(",");rserialize(root.left, sb);rserialize(root.right, sb);}return sb;}// Encodes a tree to a single string.public String serialize(TreeNode root){returnrserialize(root,newStringBuilder()).toString();}public TreeNode rdeserialize(ArrayList<String> list){
String s = list.remove(0);
TreeNode root = null;if(!s.equals("null")){
root =newTreeNode(Integer.parseInt(s));
root.left =rdeserialize(list);
root.right =rdeserialize(list);}return root;}// Decodes your encoded data to tree.public TreeNode deserialize(String data){
String[] parts = data.split(",");
ArrayList<String> list =newArrayList<>(Arrays.asList(parts));returnrdeserialize(list);}}// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));