【LeetCode】449.Serialize and Deserialize BST(Medium)解题报告
2018-03-29 13:44
405 查看
【LeetCode】449.Serialize and Deserialize BST(Medium)解题报告
题目地址:https://leetcode.com/problems/serialize-and-deserialize-bst/description/
题目描述:
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 search tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary search tree can be serialized to a string and this string can be deserialized to the original tree structure.
The encoded string should be as compact as possible.
Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.
Solution:
Date:2018年3月29日
题目地址:https://leetcode.com/problems/serialize-and-deserialize-bst/description/
题目描述:
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 search tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary search tree can be serialized to a string and this string can be deserialized to the original tree structure.
The encoded string should be as compact as possible.
Note: Do not use class member/global/static variables to store states. Your serialize and deserialize algorithms should be stateless.
Solution:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } 前面二叉树的方法同样适用,但是此题我们根据二叉搜索树的性质 先序遍历,queue */ public class Codec { // Encodes a tree to a single string. public String serialize(TreeNode root) { if(root == null) return ""; StringBuilder res = new StringBuilder(); Stack<TreeNode> stack = new Stack<>(); stack.push(root); while(!stack.isEmpty()){ TreeNode cur = stack.pop(); res.append(cur.val+" "); if(cur.right != null) stack.push(cur.right); if(cur.left != null) stack.push(cur.left); } return res.toString(); } // Decodes your encoded data to tree. public TreeNode deserialize(String data) { if(data == "") return null; String[] str = data.split(" "); Queue<Integer> queue = new LinkedList<>(); for(String s : str){ queue.offer(Integer.parseInt(s)); } return getNode(queue); } public TreeNode getNode(Queue<Integer> queue){ if(queue.isEmpty()) return null; TreeNode root = new TreeNode(queue.poll()); Queue<Integer> smallerQ = new LinkedList<>(); while(!queue.isEmpty() && queue.peek() < root.val){ smallerQ.offer(queue.poll()); } root.left = getNode(smallerQ); root.right = getNode(queue); return root; } } // Your Codec object will be instantiated and called as such: // Codec codec = new Codec(); // codec.deserialize(codec.serialize(root));
Date:2018年3月29日
相关文章推荐
- [leetcode] 449. Serialize and Deserialize BST 解题报告
- [Leetcode] 449. Serialize and Deserialize BST 解题报告
- Leetcode 449. Serialize and Deserialize BST (Medium) (cpp)
- 【LeetCode】297.Serialize and Deserialize Binary Tree(Hard)解题报告
- 【LeetCode】299.Bulls and Cows(Medium)解题报告
- 【LeetCode】230.Kth Smallest Element in a BST(Medium)解题报告
- [leetcode] 297. Serialize and Deserialize Binary Tree 解题报告
- 【LeetCode】Serialize and Deserialize Binary Tree 解题报告
- 景岁的Leetcode解题报告:297. Serialize and Deserialize Binary Tree(Python)
- 【LeetCode】102.Binary Tree Level Order Traversal(Medium)解题报告
- 【LeetCode】646.Maximum Length of Pair Chain(Medium)解题报告
- [Leetcode] 230. Kth Smallest Element in a BST 解题报告
- [leetcode] 211. Add and Search Word - Data structure design 解题报告
- 【LeetCode】653.Two Sum IV - Input is a BST(Easy)解题报告
- LeetCode解题报告 108. Convert Sorted Array to Binary Search Tree [medium]
- 【LeetCode】90.Subsets II(Medium)解题报告
- 【LeetCode】325.Maximum Size Subarray Sum Equals k(Medium)解题报告
- LeetCode-Best Time to Buy and Sell Stock III -解题报告
- 【LeetCode】623.Add One Row to Tree(Medium)解题报告
- [Leetcode] 285. Inorder Successor in BST 解题报告