首页 > 学院 > 开发设计 > 正文

297. Serialize and Deserialize Binary Tree

2019-11-06 07:55:07
字体:
来源:转载
供稿:网友

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.

For example, you may serialize the following tree

1

/ / 2 3 / / 4 5 as “[1,2,3,null,null,4,5]”, just the same as how LeetCode OJ 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) { return serialize(root, new StringBuilder()).toString(); } public StringBuilder serialize(TreeNode root, StringBuilder sb){ if(root == null) return sb.append("#").append(","); sb.append(root.val).append(","); serialize(root.left, sb); serialize(root.right, sb); return sb; } // Decodes your encoded data to tree. public TreeNode deserialize(String data) { return deserialize(new LinkedList<String>(Arrays.asList(data.split(",")))); } public TreeNode deserialize(LinkedList<String> queue) { String val = queue.poll(); if(val.equals("#")) return null; TreeNode root = new TreeNode(Integer.valueOf(val)); root.left = deserialize(queue); root.right = deserialize(queue); return root; }}// Your Codec object will be instantiated and called as such:// Codec codec = new Codec();// codec.deserialize(codec.serialize(root));
上一篇:归并排序

下一篇:矩阵连乘 (动态规划)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表