/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/publicclassCodec{public String rserialize(TreeNode root, String str){if(root == null){
str +="None,";}else{
str += String.valueOf(root.val)+",";
str =rserialize(root.left, str);
str =rserialize(root.right, str);}return str;}// Encodes a tree to a single string.public String serialize(TreeNode root){returnrserialize(root,"");}public TreeNode rdeserialize(List<String> list){if(list.get(0).equals("None")){
list.remove(0);return null;}
TreeNode root =newTreeNode(Integer.valueOf(list.get(0)));
list.remove(0);
root.left =rdeserialize(list);
root.right =rdeserialize(list);return root;}// Decodes your encoded data to tree.public TreeNode deserialize(String data){
String[] data_array = data.split(",");
List<String> data_list =newLinkedList<>(Arrays.asList(data_array));returnrdeserialize(data_list);}}// Your Codec object will be instantiated and called as such:// Codec ser = new Codec();// Codec deser = new Codec();// TreeNode ans = deser.deserialize(ser.serialize(root));