博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - Serialize and Deserialize Binary Tree
阅读量:5732 次
发布时间:2019-06-18

本文共 4155 字,大约阅读时间需要 13 分钟。

Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.Example: You may serialize the following tree:    1   / \  2   3     / \    4   5as "[1,2,3,null,null,4,5]"Clarification: The above format is the same as how LeetCode serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.
/** * 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 "null";        }        return root.val + "," +serialize(root.left) + ","+serialize(root.right);    }    // Decodes your encoded data to tree.    public TreeNode deserialize(String data) {        if(data == null || data.length() == 0){            return null;        }        Queue
queue =new LinkedList<>(); queue.addAll(Arrays.asList(data.split(","))); //String[] nodes = data.split(","); return deserializeHelper(queue); } public TreeNode deserializeHelper(Queue
nodes){ String val = nodes.remove(); if (val.equals("null")) return null; else { TreeNode node = new TreeNode(Integer.valueOf(val)); node.left = deserializeHelper(nodes); node.right = deserializeHelper(nodes); return node; } } }// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));

  无法直接传入int因为它是primitive type, changes made to it will not be visible outside the function scope. 

/** * 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 "null";        }        return root.val + "," +serialize(root.left) + ","+serialize(root.right);    }    // Decodes your encoded data to tree.    public TreeNode deserialize(String data) {        if(data == null || data.length() == 0){            return null;        }        //Queue
queue =new LinkedList<>(); //queue.addAll(Arrays.asList(data.split(","))); String[] nodes = data.split(","); return deserializeHelper(nodes, new int[]{0}); } /* public TreeNode deserializeHelper(Queue
nodes){ String val = nodes.remove(); if (val.equals("null")) return null; else { TreeNode node = new TreeNode(Integer.valueOf(val)); node.left = deserializeHelper(nodes); node.right = deserializeHelper(nodes); return node; } } */ public TreeNode deserializeHelper(String[] nodes, int[] index){ String val = nodes[index[0]]; index[0] = index[0]+1; if(val.equals("null") ){ return null; } TreeNode node = new TreeNode(Integer.valueOf(val)); node.left = deserializeHelper(nodes,index); node.right = deserializeHelper(nodes,index); return node; } }// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));

 

转载于:https://www.cnblogs.com/incrediblechangshuo/p/9736424.html

你可能感兴趣的文章
爱——无题
查看>>
分布式服务框架原来与实践 读书笔记一
查看>>
Aho-Corasick automation-KMP
查看>>
【http】post和get请求的区别
查看>>
/etc/profile
查看>>
摘记总结(1)
查看>>
TFS强制撤销某个工作区的文件签出记录
查看>>
编写who命令
查看>>
2.1 sikuli 中编程运行
查看>>
愚公移山第一章伪代码
查看>>
常见的位运算技巧总结(膜wys)
查看>>
python魔法函数(二)之__getitem__、__len__、__iter__
查看>>
EL表达式无法显示Model中的数据
查看>>
Linux应用小技巧
查看>>
考题纠错2
查看>>
ps6-工具的基础使用
查看>>
关于CefSharp.WinForms的学习
查看>>
灵活运用 SQL SERVER FOR XML PATH
查看>>
es 加磁盘扩容
查看>>
linux 参数内核
查看>>