• Leetcode 297.二叉树的序列化和反序列化


    二叉树地序列化和反序列化

    序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

    请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

    示例

    你可以将以下二叉树:

    序列化为 "[1,2,3,null,null,4,5]"

    提示这与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。

    说明不要使用类的成员 / 全局 / 静态变量来存储状态,你的序列化和反序列化算法应该是无状态的。

     1 public class Codec {
     2     // Encodes a tree to a single string.
     3     public List<Integer> serialize(TreeNode root) {
     4         List<Integer> res = new ArrayList<>();
     5         dfs(res, root);
     6         return res;
     7     }
     8 
     9     private void dfs(List<Integer> res, TreeNode root) {
    10         if (root == null) {
    11             res.add(null);
    12         } else {
    13             res.add(root.val);
    14             dfs(res, root.left);
    15             dfs(res, root.right);
    16         }
    17     }
    18 
    19     // Decodes your encoded data to tree.
    20     public TreeNode deserialize(List<Integer> data) {
    21         int index[] = {0};
    22         TreeNode root = build(index, data);
    23         return root;
    24     }
    25 
    26     private TreeNode build(int[] index, List<Integer> data) {
    27         Integer val = data.get(index[0]);
    28         index[0] = index[0] + 1;
    29         if (val == null) {
    30             return null;
    31         } else {
    32             TreeNode node = new TreeNode(val);
    33             node.left = build(index, data);
    34             node.right = build(index, data);
    35             return node;
    36         }
    37     }
    38 }
  • 相关阅读:
    com.panie 项目开发随笔_前后端框架考虑(2016.12.8)
    Jsoup 使用教程:数据抽取
    Jsoup 使用教程:输入
    项目中图片处理总结
    jsonp 跨域请求
    由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)
    由Memcached升级到 Couchbase的 Java 客户端的过程记录(二)
    jquery eval解析JSON中的注意点介绍
    JS禁止WEB页面鼠标事件大全
    jQuery事件之鼠标事件
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10205007.html
Copyright © 2020-2023  润新知