zoukankan      html  css  js  c++  java
  • 297. Serialize and Deserialize Binary Tree

    一、题目

      1、审题 

      2、分析

        将二叉树的结构序列化为字符串形式表示,在通过这个字符串形式将此二叉树的结构展示出来!

    二、解答

      1、思路

        序列化过程: 将二叉数以先序遍历的方式展示,并且使用 “X” 代表一个 null 节点,而且每个节点之间采用 “,”隔开。可以采用一个 StringBuilder 来记录增加的字符串。

        反序列化过程: 使用一个队列 Queue 存储上一步序列化的节点,当构建子树时,出现 X 代表此子树结束。继续构架下一个分支。

     1     private static final String spliter = ",";
     2     private static final String NN = "X";
     3     
     4     // Encodes a tree to a single string.
     5     public String serialize(TreeNode root) {
     6         StringBuilder sb = new StringBuilder();
     7         buildString(root, sb);
     8         return sb.toString();
     9     }
    10 
    11     private void buildString(TreeNode root, StringBuilder sb) {
    12         if(root == null)
    13             sb.append(NN).append(spliter);
    14         else {
    15             sb.append(root.val).append(spliter);
    16             buildString(root.left, sb);
    17             buildString(root.right, sb);
    18         }
    19     }
    20 
    21     // Decodes your encoded data to tree.
    22     public TreeNode deserialize(String data) {
    23         Deque<String> nodes = new LinkedList<>();
    24         nodes.addAll(Arrays.asList(data.split(spliter)));
    25         return buildTree(nodes);
    26     }
    27 
    28     private TreeNode buildTree(Deque<String> nodes) {
    29         String val = nodes.remove();
    30         if(val.equals(NN))
    31             return null;
    32         else {
    33             TreeNode node = new TreeNode(Integer.valueOf(val));
    34             node.left = buildTree(nodes);
    35             node.right = buildTree(nodes);
    36             return node;
    37         }
    38     }

        

  • 相关阅读:
    演示Eclipse插件实现代码提示和补全
    重拾《 两周自制脚本语言 》- Eclipse插件实现语法高亮
    Kindle Windows版本 中文字体修改工具
    MD5加密算法原理及实现
    Spring boot 发送邮件示例
    ubuntu下svn的命令使用
    数据库的分区、分表、分库、分片的简介
    Vue 入门之目录结构介绍
    MQTT简单介绍与实现
    SVN使用规范
  • 原文地址:https://www.cnblogs.com/skillking/p/10027088.html
Copyright © 2011-2022 走看看