java编写树的序列化与反序列化。

以下是Java实现的树序列化与反序列化代码,支持二叉树结构:


class TreeNode {

    int val;

    TreeNode left;

    TreeNode right;

    TreeNode(int x) { val = x; }

}

 java.util.LinkedList;

import java.util.Queue;


public class TreeSerializer {

    // 序列化为层次遍历字符串

    public String serialize(TreeNode root) {

        if (root == null) return "null";

        Queue queue = new LinkedList<>();

        StringBuilder sb = new StringBuilder();

        queue.offer(root);

        

        while (!queue.isEmpty()) {

            TreeNode node = queue.poll();

            if (node == null) {

                sb.append("null,");

                continue;

            }

            sb.append(node.val).append(",");

            queue.offer(node.left);

            queue.offer(node.right);

        }

        return sb.toString();

    }


    // 反序列化层次遍历字符串

    public TreeNode deserialize(String data) {

        if (data.equals("null")) return null;

        String[] nodes = data.split(",");

        Queue queue = new LinkedList<>();

        TreeNode root = new TreeNode(Integer.parseInt(nodes[0]));

        queue.offer(root);

        

        for (int i = 1; i < nodes.length; i++) {

            TreeNode parent = queue.poll();

            if (!nodes[i].equals("null")) {

                parent.left = new TreeNode(Integer.parseInt(nodes[i]));

                queue.offer(parent.left);

            }

            if (++i < nodes.length && !nodes[i].equals("null")) {

                parent.right = new TreeNode(Integer.parseInt(nodes[i]));

                queue.offer(parent.right);

            }

        }

        return root;

    }

}

public class Main {

    public static void main(String[] args) {

        TreeNode root = new TreeNode(1);

        root.left = new TreeNode(2);

        root.right = new TreeNode(3);

        root.right.left = new TreeNode(4);

        root.right.right = new TreeNode(5);


        TreeSerializer serializer = new TreeSerializer();

        String serialized = serializer.serialize(root);

        System.out.println("序列化结果: " + serialized);

        

        TreeNode deserialized = serializer.deserialize(serialized);

        System.out.println("反序列化验证: " + 

            serializer.serialize(deserialized));

    }

}


该实现使用层次遍历(BFS)进行序列化,可以处理任意二叉树结构。序列化格式示例:"1,2,3,null,null,4,5,null,null,null,null"。测试用例展示了完整的序列化-反序列化流程验证。

http://art.liyintong.com

http://art.naqimai.cn

http://art.kucedu.cn

http://art.yueluyan.cn

http://art.huayuke.cn

http://art.haizichu.cn

http://art.yawanmei.cn

http://art.biaolele.cn

http://art.shenhebu.cn

http://art.zimeiren.cn

http://art.qishouka.cn

http://art.ruanding.cn

http://art.xjhsdsc.cn

http://art.itoren.cn

http://art.iseebest.cn

http://art.bndaye.cn

http://art.rustler.cn

http://art.excelta.cn

http://art.diaolift.cn

http://art.jxpfbyjs.cn

http://art.banans.cn

http://art.aspira.cn

http://art.bxhqw.cn

http://art.pudiweng.cn

http://art.tingbu.cn

http://art.ouhei.cn

http://art.huiha.cn

http://art.miuling.cn

http://art.podang.cn

http://art.fenkun.cn

http://art.liangran.cn

http://art.zouliu.cn

http://art.xuhou.cn

http://art.kuopao.cn

http://art.lunkai.cn

http://art.zhaiti.cn

http://art.fogei.cn

http://art.gengluo.cn

http://art.wadiao.cn

http://art.hunjun.cn

http://art.huanken.cn

http://art.chuancong.cn

http://art.buzun.cn

http://art.zhuozou.cn

http://art.lazai.cn

http://art.zengle.cn

http://art.suidun.cn

http://art.zhaojunji.cn

http://art.huihuoban.cn

http://art.wanjiahua.cn

http://art.conglinyi.cn

http://art.henyoupin.cn

http://art.wuwenkang.cn

http://art.tujiachen.cn

http://art.zilaoweng.cn

http://art.baolema.cn

http://art.shumeilin.cn

http://art.anhetong.cn

http://art.wenjishu.cn

http://art.kansande.cn

http://art.yueshijie.cn

http://art.tihujiu.cn

http://art.huatoutou.cn

http://art.xiaolaige.cn

http://art.huguangu.cn

http://art.lvdate.cn

http://art.kesini.cn

http://art.soubianlu.cn

http://art.fuenbu.cn

http://art.liuyakun.cn

http://art.zouyizou.cn

http://art.juyingba.cn

http://art.namahu.cn

http://art.dadudu.cn

http://art.xuewenzi.cn

http://art.lazhuyong.cn

http://art.aizishu.cn

http://art.nianjiepo.cn

http://art.baisuijie.cn

http://art.wanyuecun.cn

http://art.shoupashu.cn

http://art.hetongmei.cn

http://art.ouenming.cn

http://art.qianyiduo.cn

http://art.yidingzhi.cn

http://art.zouyuming.cn

http://art.mofaya.cn

http://art.hexiangru.cn

http://art.quyouban.cn

http://art.mingyinsi.cn

http://art.junepan.cn

http://art.qiyuehong.cn

http://art.ledatong.cn

http://art.chenqinga.cn

http://art.ebuyun.cn

http://art.gayijiu.cn

http://art.liqinge.cn

http://art.liubawan.cn

http://art.huabaohan.cn

http://art.aiguandan.cn

http://art.judoubang.cn

http://art.huachenyu.cn

http://art.hexiaolia.cn

http://art.feiyuxuan.cn

http://art.zhenwasai.cn

http://art.maoweilai.cn

http://art.yunyuewei.cn

http://art.kemensen.cn

http://art.anxinyuan.cn

http://art.deyisheji.cn

http://art.ximaguohe.cn

http://art.gewukeji.cn

http://art.rehuang.cn

请使用浏览器的分享功能分享到微信等