zoukankan      html  css  js  c++  java
  • 二叉树的序列化与反序列化

    二叉树的序列化与反序列化

    题目:
    序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

    请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

    示例:

    你可以将以下二叉树:
    在这里插入图片描述

    序列化为 "[1,2,3,null,null,4,5]"

    解题思路:用先序遍历将二叉树结构序列化为一个字符串,空节点用'#'来表示,反序列化时用队列来存储所有节点(先序),判断当前出队元素是否为'#'如果时则时空节点,如果不是就继续反序列化该节点

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Codec {
    
        // Encodes a tree to a single string.
        public String serialize(TreeNode root) {
            if(root == null)
                return "#";
            
            return root.val + "," + serialize(root.left) + "," + serialize(root.right);
        }
    
        // Decodes your encoded data to tree.
        public TreeNode deserialize(String data) {
            Queue<String> queue = new LinkedList(Arrays.asList(data.split(",")));
            return deserialize(queue);
        }
        
        private TreeNode deserialize(Queue<String> queue) {
            //当队列为空时树也正好重建完成 所以不用判断队列空的情况
            String cur = queue.poll();
            if(cur.equals("#"))
                return null;
            
            TreeNode node = new TreeNode(Integer.parseInt(cur));
            node.left = deserialize(queue);
            node.right = deserialize(queue);
            
            return node;
        }
    }
    
    // Your Codec object will be instantiated and called as such:
    // Codec codec = new Codec();
    // codec.deserialize(codec.serialize(root));
    
  • 相关阅读:
    PHP函数utf8转gb2312编码
    mysql的数据恢复
    Centos5.6 x86下部署安装DRBD+Heartbeat+MySQL
    使用mysqlproxy 快速实现mysql 集群 读写分离
    删除MySQL二进制日志的3种方法
    mysql proxy 中文乱码解决办法
    有一天……
    占个位子
    雪夜拾到一部破旧的手机
    书教得再好也还是个讲师 学生千篇文悼大学讲师
  • 原文地址:https://www.cnblogs.com/katoMegumi/p/13918186.html
Copyright © 2011-2022 走看看