zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    【转载】ASP.NET MVC中Controller与View之间的数据传递总结
    [转载]ASP.NET MVC 2配置使用CKEditor编辑器
    一步一步学NUnit(1)
    js关闭窗口弹出对话框
    [转载]将ASP.NET MVC 2.0 部署在IIS6和IIS7上的教程
    [转载] HTTP MIME
    【转载】用ckeditor分页符结合正则表达式给文章分页
    ASP.NET MVC2中返回Json异常的解决办法
    CKEditor
    [转载].net下的生成静态页面并分页 .
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10205007.html
Copyright © 2011-2022 走看看