Untitled
import java.util.*; public class Codec { // Serialize the tree using Preorder Traversal public String serialize(TreeNode root) { StringBuilder sb = new StringBuilder(); serializeHelper(root, sb); return sb.toString(); } private void serializeHelper(TreeNode node, StringBuilder sb) { if (node == null) { sb.append("null,"); // Append "null" for empty nodes return; } sb.append(node.val).append(","); // Append the node's value serializeHelper(node.left, sb); // Serialize left subtree serializeHelper(node.right, sb); // Serialize right subtree } // Deserialize the tree from Preorder Traversal public TreeNode deserialize(String data) { if (data == null || data.isEmpty()) { return null; } // Split the string into tokens Queue<String> nodes = new LinkedList<>(Arrays.asList(data.split(","))); return deserializeHelper(nodes); } private TreeNode deserializeHelper(Queue<String> nodes) { String value = nodes.poll(); // Get the next value if (value.equals("null")) { return null; // Return null for empty nodes } TreeNode node = new TreeNode(Integer.parseInt(value)); // Create a new TreeNode node.left = deserializeHelper(nodes); // Reconstruct left subtree node.right = deserializeHelper(nodes); // Reconstruct right subtree return node; } } // TreeNode definition class TreeNode { int val; TreeNode left, right; TreeNode(int val) { this.val = val; } }
Leave a Comment