思路

  • 递归,先序遍历,把左子树用括号括起来,6!{#!}7!
    解码就是去括号

代码

import java.util.*;
public class Solution {
    String Serialize(TreeNode root) {
        if(root==null){return "#!";}
        String res=root.val+"!";
        return res+"{"+Serialize(root.left)+"}"+Serialize(root.right);
  }
    TreeNode Deserialize(String str) {
        if(str.length()<=0 || str.charAt(0)=='#'){return null;}
        int p=0;
        while(p<str.length() && str.charAt(p)!='!'){
            p++;
        }
        TreeNode root=new TreeNode(Integer.parseInt(str.substring(0,p)));
        p++;
        int start=p;//当前p为{
        int cnt=1;
        while(cnt>0){
            p++;
            if(str.charAt(p)=='}'){
                cnt--;
            }
            if(str.charAt(p)=='{'){
                cnt++;
            }
        }
        root.left=Deserialize(str.substring(start+1,p));
        root.right=Deserialize(str.substring(p+1));
       return root;
  }
}