LeetCode 297. Serializar y deserializar árbol binario 【Java】

Descripción del título

Serialización y deserialización de árboles binarios.

Código AC

El título dice que la 不要使用类的成员 / 全局 / 静态变量来存储状态,你的序列化和反序列化算法应该是无状态的。serialización y la deserialización no los serializarán. Aunque no es un problema usarlos para resolver problemas, debe tenerse en cuenta que todas las cosas anteriores han usado variables globales. Dada la práctica de no necesitar usar variables globales esta vez, ¡la solución a este problema no es única!

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Codec {

	// Encodes a tree to a single string.
    public String serialize(TreeNode root) {
        if(root==null){
            return "#,";
        }
        String str=root.val+",";
        str+=serialize(root.left);
        str+=serialize(root.right);
        return str;
    }


    // Decodes your encoded data to tree.
    public TreeNode deserialize(String data) {
        int u[]={0};
        return dfsDeser(data,u);
    }


    TreeNode dfsDeser(String data,int u[]){
        if(u[0]==data.length()) return null;
        int k=u[0];
        while(data.charAt(k)!=',') k++;
        if(data.charAt(u[0])=='#'){
            //跳过#和,
            u[0]+=2;
            return null;
        }
        int t=0;
        //判断负数
        boolean is_minus=false;
        if(data.charAt(u[0])=='-') {
            is_minus=true;
            u[0]++;
        }
        //计算val值
        for(int i=u[0];i<k;i++){
            t=t*10+data.charAt(i)-'0';
        }
        if(is_minus)
            t=-t;
        //跳过逗号    
        u[0]=k+1;
        TreeNode root=new TreeNode(t);
        root.left=dfsDeser(data,u);
        root.right=dfsDeser(data,u);
        return root;
    }
}

// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.deserialize(codec.serialize(root));

Además, la serialización y la deserialización también se pueden hacer en una cola.

201 artículos originales publicados · Me gusta9 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/weixin_40992982/article/details/105480196
Recomendado
Clasificación