zoukankan      html  css  js  c++  java
  • 二叉树的序列化和反序列化(Java)

    请实现两个函数,分别用来序列化和反序列化二叉树

    序列化就是将二叉树以字符串输出,反序列化:根据自己输出的字符串,构建二叉树。

    这里先序遍历输出,且为了方便反序列化,各个节点“,”隔开,且叶子节点后用"#,"隔开

    /*

    public class TreeNode {

        int val = 0;

        TreeNode left = null;

        TreeNode right = null;

     

        public TreeNode(int val) {

            this.val = val;

     

        }

     

    }

    */

    public class Solution {

        int index;

        String Serialize(TreeNode root) {

            StringBuilder sb=new StringBuilder();

            if(root==null)

                return "#,";

            sb.append(root.val+",");

            sb.append(Serialize(root.left));

            sb.append(Serialize(root.right));

            return sb.toString();

      }

        TreeNode Deserialize(String str) {

            if(str==null)

                return null;

           

           index=-1;

           

            String[] ss=str.split(",");

            return DeserializeStr(ss);

      }

        public TreeNode DeserializeStr(String[] ss){

            index++;

            TreeNode node=null;

            if(!ss[index].equals("#")){

                node=new TreeNode(Integer.valueOf(ss[index]));

                node.left=DeserializeStr(ss);

                node.right=DeserializeStr(ss);

            }

           

            return node;

        }

    }

  • 相关阅读:
    Flink开发中的问题
    怎么确定一个Flink job的资源
    Flink统计日活
    Flink读取resource资源文件
    Spark-6-如何缓解消除数据倾斜
    Spark-5-如何定位导致数据倾斜的代码
    Spark-4-为何要处理数据倾斜
    集合遍历删除中遇到问题
    1206
    1205
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8025262.html
Copyright © 2011-2022 走看看