力扣labuladong一刷day32天二叉树

力扣labuladong一刷day32天二叉树

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

题目链接:https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/
思路:关于序列化与反序列化,题目不要求序列化的方式,只要求树经过序列化和反序列化之后依然一样,如果序列化的过程中记录了空节点则只通过前序或者后序就可以完整记录二叉树的信息,可以还原,但中序不可以。
我采用",“分割不同节点,”#"表示null。前序遍历拼接字符串进行序列化,反序列化,也是前序遍历,当然需要在进入递归之前new 一个节点,然后把递归的返回值设置为该节点的左右子节点。

public class Codec {
   

    StringBuilder builder = new StringBuilder();
    LinkedList<String> list = new LinkedList<>();
    public String serialize(TreeNode root) {
   
        traverse(root);
        return builder.toString();
    }

    public TreeNode deserialize(String data) {
   

        String[] split = data.split(",");
        for (String s : split) {
   
            list.add(s);
        }
        return create();
    }

    void traverse(TreeNode root) {
   
        if (root == null) {
   
            builder.append("#,");
            return;
        }
        builder.append(root.val).append(",");
        traverse(root.left);
        traverse(root.right);
    }

    TreeNode create() {
   
        if (list.isEmpty()) {
   
            return null;
        }
        String s = list.removeFirst();
        if ("#".equals(s)) return null;
        TreeNode node = new TreeNode(Integer.parseInt(s));
        node.left = create();
        node.right = create();
        return node;
    }
}

相关推荐

  1. labuladongday32

    2023-12-10 01:24:02       64 阅读
  2. labuladongday30

    2023-12-10 01:24:02       56 阅读
  3. labuladongday31

    2023-12-10 01:24:02       54 阅读
  4. labuladongday29

    2023-12-10 01:24:02       57 阅读
  5. labuladongday56堆实现优先级队列

    2023-12-10 01:24:02       60 阅读
  6. labuladongday35

    2023-12-10 01:24:02       43 阅读
  7. labuladongday34

    2023-12-10 01:24:02       57 阅读
  8. labuladongday36

    2023-12-10 01:24:02       71 阅读
  9. labuladongday52LRU算法

    2023-12-10 01:24:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-10 01:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-10 01:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-10 01:24:02       82 阅读
  4. Python语言-面向对象

    2023-12-10 01:24:02       91 阅读

热门阅读

  1. 一步一步写线程之一简单的开始

    2023-12-10 01:24:02       51 阅读
  2. 如何设计自动完成系统

    2023-12-10 01:24:02       61 阅读
  3. PCL 三维点云中求解圆的三维方程

    2023-12-10 01:24:02       59 阅读
  4. FPGA | Verilog基础语法

    2023-12-10 01:24:02       68 阅读
  5. Vue笔记(四)路由

    2023-12-10 01:24:02       52 阅读
  6. 请简要介绍一下HTML的发展史?

    2023-12-10 01:24:02       50 阅读
  7. 区间价值 --- 题解--动态规划

    2023-12-10 01:24:02       60 阅读
  8. spring 两个service相互引用,会有循环依赖吗

    2023-12-10 01:24:02       56 阅读