297. 二叉树的序列化与反序列化

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

困难难度,这道题和剑指 Offer 37. 序列化二叉树是同一道题。虽然标注为困难难度,但是实际上比较简单,序列化和反序列化使用DFS深度遍历即可。

// Encodes a tree to a single string.
public String serialize(TreeNode root) {return serialize(root, new StringBuilder()).toString();
}private StringBuilder serialize(TreeNode root, StringBuilder sb) {if (root == null) {sb.append("null,");} else {sb.append(root.val).append(",");sb = serialize(root.left, sb);sb = serialize(root.right, sb);}return sb;
}// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {return deserialize(new LinkedList<>(Arrays.asList(data.split(","))));
}private TreeNode deserialize(List<String> list) {if (list.get(0).equals("null")) {list.remove(0);return null;}TreeNode root = new TreeNode(Integer.parseInt(list.remove(0)));root.left = deserialize(list);root.right = deserialize(list);return root;
}

LeetCode Java刷题笔记—297. 二叉树的序列化与反序列化相关推荐

  1. 【LeetCode】【HOT】297. 二叉树的序列化与反序列化(BFS)

    [LeetCode][HOT]297. 二叉树的序列化与反序列化 文章目录 [LeetCode][HOT]297. 二叉树的序列化与反序列化 package hot;import java.util. ...

  2. LeetCode Java刷题笔记—876. 链表的中间结点

    876. 链表的中间结点 给定一个头结点为 head 的非空单链表,返回链表的中间结点.如果有两个中间结点,则返回第二个中间结点. 简单难度.使用快慢指针即可,快指针fast每次走2步,慢指针slow ...

  3. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  4. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  5. 牛客网java刷题笔记2019-1-4

    牛客网java刷题笔记 2019-1-4 1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值, 构造器和方法的区别: 功能和作用的不同 构造器是为了创建 ...

  6. Java实现 LeetCode 297 二叉树的序列化与反序列化

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

  7. 【leetcode】二叉树,297二叉树的序列化与反序列化

    297. 二叉树的序列化与反序列化 前言 题目难度:困难 一.题目描述 二.前序遍历解法 三.后序遍历解法 四.中序遍历解法 五.层级遍历解法 前言 如果你看过下面这几篇,那这道题应该对你来说信手拈来 ...

  8. LeetCode 297. 二叉树的序列化与反序列化 | Python

    文章目录 297. 二叉树的序列化与反序列化 题目 解题思路 代码实现 实现结果 总结 297. 二叉树的序列化与反序列化 题目来源:力扣(LeetCode)https://leetcode-cn.c ...

  9. golang力扣leetcode 297.二叉树的序列化与反序列化

    297.二叉树的序列化与反序列化 297.二叉树的序列化与反序列化 题解 代码 297.二叉树的序列化与反序列化 297.二叉树的序列化与反序列化 题解 题目:给你一个二叉树,序列化从一个string ...

最新文章

  1. linux pam 解锁_linux中pam模块
  2. SpringSecurity 权限控制之开启动态权限注解支持
  3. laravel redis_Redis 之服务器集群配置
  4. mysql 四种存储引擎
  5. CSS属性和值--备份
  6. ssh登录忽略known_hosts列表
  7. 如何把PDF锁定,限制修改文档内容?
  8. 3D 贴图丢失的检测以及解决办法大全
  9. 用Python实现模糊聚类(传递闭包法)
  10. css3动画正弦曲线,css动画之模拟正余弦曲线的实例分享
  11. python实现批量图片格式转换
  12. 悬浮组件 - gitter 在线交流
  13. 46000\46001\46002\MNC\MCC\IMSI
  14. RequestMapping的映射URL模板
  15. EMC设计理论通俗非科班学习笔记(完结)
  16. UDP与TCP协议详解
  17. 双十一淘宝美妆数据分析
  18. 计算机操作系统复习精简版
  19. android 双屏壁纸,怎么让双屏显示壁纸不一样
  20. 高斯投影转换(3度带)

热门文章

  1. R报错:WARNING: Rtools is required to build R packages, but is not currently installed.
  2. 虹软人脸识别增值版4.1SDK DEMO windows平台搭建
  3. 加速推进市域社会治理现代化在社会治理体系中有何作用
  4. ZJU1003 Crashing Balloon - 踩气球
  5. Oracle 复制表结构和数据
  6. 小马哥 IOC学习笔记
  7. git 怎么给自己的分支命名_Git分支管理及命名规范
  8. 7-2 例4-3游泳池改造预算
  9. SVM算法原理以及sklearn实例
  10. archlinux的pacman错误