标签:variable data connect tin ret ati state 遇到 val
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 5
as "[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.
每次遇到递归就容易想不出来。。
还有就是一些基本的API:
StringBuilder -- 将Integer or String加入用的是append
string可以用split() 来进行拆分,括号里面写拆分依据,比如(",")
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Codec { private static String spliter = ","; private static String NN = "X"; // Encodes a tree to a single string. public String serialize(TreeNode root) { StringBuilder sb = new StringBuilder(); buildString(root, sb); return sb.toString(); } public void buildString(TreeNode node, StringBuilder sb) { if(node == null){ sb.append(NN).append(spliter); } else { sb.append(node.val).append(spliter); buildString(node.left, sb); buildString(node.right, sb); } } // Decodes your encoded data to tree. public TreeNode deserialize(String data) { Deque<String> nodes = new LinkedList<>(); nodes.addAll(Arrays.asList(data.split(spliter))); return buildTree(nodes); } public TreeNode buildTree(Deque<String> nodes){ String v = nodes.remove(); if(v.equals(NN)){ return null; }else { TreeNode node = new TreeNode(Integer.valueOf(v)); node.left = buildTree(nodes); node.right = buildTree(nodes); return node; } } } // Your Codec object will be instantiated and called as such: // Codec codec = new Codec(); // codec.deserialize(codec.serialize(root));
leetcode 297. Serialize and Deserialize Binary Tree
标签:variable data connect tin ret ati state 遇到 val
原文地址:https://www.cnblogs.com/jamieliu/p/10466784.html