zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 449 序列化和反序列化二叉搜索树

    449. 序列化和反序列化二叉搜索树

    序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。

    设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。

    编码的字符串应尽可能紧凑。

    注意:不要使用类成员/全局/静态变量来存储状态。 你的序列化和反序列化算法应该是无状态的。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Codec {
     public int i = 0;
     
        public String serialize(TreeNode root) {
            StringBuilder sb = new StringBuilder();
            doSerialize(root, sb);
            return sb.toString();
        }
    
        public void doSerialize(TreeNode root, StringBuilder sb) {
            if (root == null) {
                return;
            }
            sb.append((char) root.val);
            doSerialize(root.left, sb);
            doSerialize(root.right, sb);
        }
     
        public TreeNode deserialize(String data) {
            char[] arr = data.toCharArray();
            return doDescrialize(arr, Integer.MIN_VALUE, Integer.MAX_VALUE);
        }
    
        private TreeNode doDescrialize(char[] arr, int minValue, int maxValue) {
            if (i >= arr.length || (char) arr[i] > maxValue) {
                return null;
            }
            TreeNode root = new TreeNode((char) arr[i++]);
            root.left = doDescrialize(arr, minValue, root.val);
            root.right = doDescrialize(arr, root.val, maxValue);
            return root;
        }
    }
    
    // Your Codec object will be instantiated and called as such:
    // Codec codec = new Codec();
    // codec.deserialize(codec.serialize(root));
    
  • 相关阅读:
    事件对象
    事件方法on()
    each()遍历
    链接式操作
    理解选取更新范围
    net3.5 无网络环境安装
    visual studio 2017 报错 无法下载安装文件。请检查Internet连接,然后重试
    删除数据恢复数据语句 Oracle
    sqlserver还原数据库(mdf与ldf文件如何还原到SQLserver数据库)
    sqlserver2012卸载
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075664.html
Copyright © 2011-2022 走看看