Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- // Definition for a Node.
- class Node {
- public int val;
- public List<Node> children;
- public Node() {}
- public Node(int _val,List<Node> _children) {
- val = _val;
- children = _children;
- }
- };
- */
- /*
- Serialize function
- Time Complexity: O(M * K) = O(M * 11) = O(M)
- Space Complexity: O(M * K) = O(M * 11) = O(M)
- M = Number of Nodes
- K = Average Length of each node. (Bounded by 11)
- Deserialize function
- Time Complexity: O(N + M + M*K) = O(N + M*K) = O(N+N) = O(N)
- Space Complexity: O(M * K) = O(N)
- N = Length of the input string
- M = Number of Nodes
- K = Average Length of each node. (Bounded by 11)
- */
- class Codec {
- // Encodes a tree to a single string.
- public String serialize(Node root) {
- List<String> list = new ArrayList();
- if (root == null) {
- return "";
- }
- serializeHelper(list, root);
- return String.join(",", list);
- }
- private void serializeHelper(List<String> list, Node node) {
- if (node == null) {
- return;
- }
- list.add(String.valueOf(node.val));
- list.add(String.valueOf(node.children.size()));
- for (Node child : node.children) {
- serializeHelper(list, child);
- }
- }
- // Decodes your encoded data to tree.
- public Node deserialize(String data) {
- if (data == null || data.length() == 0) {
- return null;
- }
- return deserializeHelper(new LinkedList<String>(Arrays.asList(data.split(","))));
- }
- private Node deserializeHelper(Queue<String> queue) {
- if (queue == null || queue.isEmpty()) {
- return null;
- }
- Node node = new Node();
- node.val = Integer.parseInt(queue.poll());
- int noOfChildren = 0;
- if (!queue.isEmpty()) {
- noOfChildren = Integer.parseInt(queue.poll());
- }
- node.children = new ArrayList<Node>(noOfChildren);
- for (int i = 0; i < noOfChildren; i++) {
- node.children.add(deserializeHelper(queue));
- }
- return node;
- }
- }
- // Your Codec object will be instantiated and called as such:
- // Codec codec = new Codec();
- // codec.deserialize(codec.serialize(root));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement