Untitled
unknown
plain_text
10 months ago
1.7 kB
4
Indexable
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;
}
}
Editor is loading...
Leave a Comment