albertonline· portal
blind75

Solving Serialize and Deserialize Binary Tree: Encoding and Reconstructing Trees

Jan 21, 2024 · Detailing methods to serialize a binary tree into a string and deserialize the string back into the original tree structure.

The "Serialize and Deserialize Binary Tree" problem is about finding efficient ways to convert a binary tree into a string format (serialize) and then reconstruct the tree from that string (deserialize).

Problem Statement

Given the root of a binary tree, design an algorithm to serialize the tree into a string and deserialize the string back into the original tree structure.

Example

Consider a binary tree: Binary Tree

Serialized string might be: "1,2,null,null,3,4,null,null,5,null,null"

Solution Approach - Depth-First Traversal

class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;

  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = val === undefined ? 0 : val;
    this.left = left === undefined ? null : left;
    this.right = right === undefined ? null : right;
  }
}

function serialize(root: TreeNode | null): string {
  return serializeHelper(root, []).join();

  function serializeHelper(node: TreeNode | null, arr: string[]): string[] {
    if (node === null) {
      arr.push("null");
    } else {
      arr.push(node.val.toString());
      serializeHelper(node.left, arr);
      serializeHelper(node.right, arr);
    }
    return arr;
  }
}

function deserialize(data: string): TreeNode | null {
  const arr = data.split(",");
  return deserializeHelper(arr);

  function deserializeHelper(arr: string[]): TreeNode | null {
    if (arr[0] === "null") {
      arr.shift();
      return null;
    }

    const value = arr.shift();
    if (typeof value === "string") {
      const root = new TreeNode(parseInt(value));
      root.left = deserializeHelper(arr);
      root.right = deserializeHelper(arr);
      return root;
    } else {
      throw new Error("Array is empty, cannot shift any more elements.");
    }
  }
}

Breaking Down the Solution


  • Serialize Function: Convert the tree into a string representation using pre-order traversal.
  • Deserialize Function: Reconstruct the tree from the string representation, again using pre-order traversal logic.
  • Handling Null Nodes: 'null' is used to represent the absence of a node.

Conclusion


Serializing and deserializing a binary tree is a critical problem in tree algorithms, demonstrating the importance of tree traversal techniques and data representation in computing.

Comments (0)

Stub comments live in your browser only (localStorage). No server round-trip yet.

No comments yet. Be the first.