From 214d8123469666cfa6f327b92c0d26153b652178 Mon Sep 17 00:00:00 2001 From: Prachi Agrawal <60473704+prachi0011@users.noreply.github.com> Date: Sun, 9 Oct 2022 11:39:24 +0530 Subject: [PATCH] Serialize and Deserialize Binary Tree --- Hard/SerializeandDeserializeBinaryTree.java | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Hard/SerializeandDeserializeBinaryTree.java diff --git a/Hard/SerializeandDeserializeBinaryTree.java b/Hard/SerializeandDeserializeBinaryTree.java new file mode 100644 index 0000000..8a467ea --- /dev/null +++ b/Hard/SerializeandDeserializeBinaryTree.java @@ -0,0 +1,37 @@ +/** + * 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 "X"; + } + String leftSerialized = serialize(root.left); + String rightSerialized = serialize(root.right); + return root.val + ","+leftSerialized + ","+rightSerialized; + } + + // Decodes your encoded data to tree. + public TreeNode deserialize(String data) { + Queue nodesLeft = new LinkedList<>(); + nodesLeft.addAll(Arrays.asList(data.split(","))); + return deserializeHelper(nodesLeft); + + } + public TreeNode deserializeHelper(Queue nodesLeft){ + String valueforNode = nodesLeft.poll(); + if(valueforNode.equals("X")) return null; + TreeNode newNode = new TreeNode(Integer.valueOf(valueforNode)); + newNode.left = deserializeHelper(nodesLeft); + newNode.right = deserializeHelper(nodesLeft); + return newNode; + } +} \ No newline at end of file