/** * 面试题62:序列化二叉树 * 请实现两个函数,分别用来序列化和反序列化二叉树 */import java.lang.StringBuilder;public class _62_seriailze_binaryTree { public static void main(String[] args) { TreeNode62 treeNode62 = new TreeNode62(1); treeNode62.left = new TreeNode62(2); treeNode62.right = new TreeNode62(3); Solution62 solution62 = new Solution62(); String serialize = solution62.Serialize(treeNode62); System.out.println(serialize); }}class Solution62 { String Serialize(TreeNode62 root) { if(root==null){ return ""; } StringBuilder sb = new StringBuilder(); Serialize2(root,sb); return sb.toString(); } void Serialize2(TreeNode62 root,StringBuilder sb) { if (root == null) { sb.append("$,"); return; } sb.append(root.val); sb.append(","); Serialize2(root.left,sb); Serialize2(root.right,sb); } TreeNode62 Deserialize(String str) { if(str==null||str.length()==0){ return null; } return Deserialize2(str.split(",")); } int index=-1; TreeNode62 Deserialize2(String[] str) { index++; if(!"$".equals(str[index])){ TreeNode62 result=new TreeNode62(Integer.parseInt(str[index])); result.left=Deserialize2(str); result.right=Deserialize2(str);; return result; } return null; }}class TreeNode62 { int val = 0; TreeNode62 left = null; TreeNode62 right = null; public TreeNode62(int val) { this.val = val; }}