美文网首页
2022-02-01 048 序列化和反序列化

2022-02-01 048 序列化和反序列化

作者: 16孙一凡通工 | 来源:发表于2022-02-01 21:06 被阅读0次

    java版本:

    public class Codec {
        
       int i=0;
       int n;
        // Encodes a tree to a single string.
        StringBuffer str=new StringBuffer("");
         ArrayDeque<TreeNode> queue=new ArrayDeque<>();
        // 层次遍历这个树
        public String serialize(TreeNode root) {
    
        //    queue.push(root);
        //    int size=queue.size();
        //   while(!queue.isEmpty()){
        //        size=queue.size();
        //       for(int i=0;i<size;i++){
        //        TreeNode node=queue.poll();
        //        str.append(Integer.toString(node.val));
        //         str.append(",");
                
        //        if(node.left!=null){
        //           queue.offerLast(node.left);
        //        }
              
        //       if(node.right!=null){
        //           queue.offerLast(node.right);
        //       }
        //       }
    
        //   }
        //  str.deleteCharAt(str.length()-1);
        return rserialize(root,"");
          
          
            
        }
    public String rserialize(TreeNode root,String str){
        //  if(root==null){
        //       str.append("null,");
        //    }else{
        //    str.append(Integer.toString(root.val));
        //       str.append(",");
        //    }
             
        //    serialize(root.left);
        //    serialize(root.right);
         if (root == null) {
                str += "None,";
            } else {
                str += str.valueOf(root.val) + ",";
                str = rserialize(root.left, str);
                str = rserialize(root.right, str);
            }
            return str;
    
    
    }
    
         
    
    
    
        // Decodes your encoded data to tree.
        public TreeNode deserialize(String data) {
        
            // String[] arr=data.split(",");
        //     第一版本
            // n=arr.length;
            
            // TreeNode root=new TreeNode();
            //  root.val=Integer.parseInt(arr[0]);
            //    i++;
            
            //   BFS(root,arr);
            //  return root;
             String[] dataArray = data.split(",");
            List<String> dataList = new LinkedList<String>(Arrays.asList(dataArray));
            return rdeserialize(dataList);
           
        }
         public TreeNode rdeserialize(List<String> dataList) {
            if (dataList.get(0).equals("None")) {
                dataList.remove(0);
                return null;
            }
      
            TreeNode root = new TreeNode(Integer.valueOf(dataList.get(0)));
            dataList.remove(0);
            root.left = rdeserialize(dataList);
            root.right = rdeserialize(dataList);
        
            return root;
        }
    
    
    
    
        // public TreeNode BFS( TreeNode root,String[] arr){
    
        //     TreeNode left=new TreeNode();
        //     TreeNode right=new TreeNode();
            
        //         if(i<n && arr[i]!="null" ){
        //             left=new TreeNode();
        //             left.val=Integer.parseInt(arr[i]);
        //             root.left=left;
        //         }else{
        //             // root.left=null;
        //         }
        //          i++;
        //          if(i<n && arr[i]!="null"){
        //             right=new TreeNode();
        //             right.val=Integer.parseInt(arr[i]);
        //             root.right=right;
        //         }else{
        //             // root.right=null;
        //         }
        //         i++;
        //         if(root.left!=null){
        //           BFS(root.left,arr);
        //         }
        //          if(root.right!=null){
        //          BFS(root.right,arr);
    
        //          }
            
        //     return root;
        // }
    }
    

    // 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));

    相关文章

      网友评论

          本文标题:2022-02-01 048 序列化和反序列化

          本文链接:https://www.haomeiwen.com/subject/mgclkrtx.html