//序列化
public static String Serialize(TreeNode root) {
String s="";
if(root==null)return s;
LinkedList<TreeNode> list=new LinkedList<TreeNode>();
list.add(root);
while(!list.isEmpty()){
TreeNode p=list.poll();
if(p==null)s+="$"+",";
else{
s+=p.val+",";
list.add(p.left);
list.add(p.right);
}
}
String[]ss=s.split("");//去掉最后一个逗号
String s1="";
for(int i=0;i<ss.length-1;i++){
s1+=ss[i];
}
return s1;
}
//反序列化
public static TreeNode Deserialize(String str) {
if(str.length()==0||str=="$") return null;
LinkedList<TreeNode> list=new LinkedList<TreeNode>();
String[] s=str.split(",");
int n=0;
TreeNode p=new TreeNode(Integer.valueOf(s[n++]));
TreeNode root=p;
list.add(p);
while(!list.isEmpty()){
p=list.poll();
if(p!=null){
if(!s[n].equals("$")) p.left=new TreeNode(Integer.valueOf(s[n++]));
else{
p.left=null;
n++;
}
if(!s[n].equals("$"))p.right=new TreeNode(Integer.valueOf(s[n++]));
else {
p.right=null;
n++;
}
list.add(p.left);
list.add(p.right);
}
}
return root;
}