##题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
##解题思路
1,序列化和反序列化都可以通过前序遍历(根左右)来进行
2,序列化遇到null用“#”来标明
3,反序列化的时候遇到“#”则停止
##代码
/** * */ package 二叉树; /** * <p> * Title:请实现两个函数,分别用来序列化和反序列化二叉树 * * */ public class SerializeAndDeserialize { /** * void * * @param args */ public String Serialize(TreeNode root) { //通过前序遍历来序列化二叉树,遇到null值则改为特殊符号 StringBuffer sb = new StringBuffer(); if (root == null) { sb.append("#,"); return sb.toString(); } sb.append(root.val + ","); //根 sb.append(Serialize(root.left));//左 sb.append(Serialize(root.right));//右 return sb.toString(); } public int index =-1; public TreeNode Deserialize(String str) { index++; int len = str.length(); if(index>=len){ return null; //index从0开始,到末尾结束 } String[] strs = str.split(","); //把字符串按照“,”分隔开 TreeNode node =null; if(!strs[index].equals("#")){ node = new TreeNode(Integer.valueOf(strs[index])); node.left =Deserialize(str); node.right = Deserialize(str); } return node; } public static void main(String[] args) { // TODO Auto-generated method stub } }