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     }

        

  • 相关阅读:
    树链剖分 关于点权与边权的转换
    2018 CCPC 吉林站 H Lovers || HDU 6562 (线段树哦)
    统计学习方法(一)概念
    python学习心得(三)
    python学习心得
    Python学习:基本概念
    Python学习(一)
    SparkMLlib聚类学习之KMeans聚类
    SparkMLlib回归算法之决策树
    SparkMLlib学习之线性回归
  • 原文地址:https://www.cnblogs.com/skillking/p/10027088.html
Copyright © 2011-2022 走看看