Serialize and Deserialize Binary Tree
Try to solve the Serialize and Deserialize Binary Tree problem.
Statement
Serialize a given binary tree to a file and deserialize it back to a tree. Make sure that the original and the deserialized trees are identical.
-
Serialize: Write the tree to a file.
-
Deserialize: Read from a file and reconstruct the tree in memory.
Serialize the tree into a list of integers, and then, deserialize it back from the list to a tree. For simplicity’s sake, there’s no need to write the list to the files.
Constraints:
- The number of nodes in the tree is in the range .
-
Node.value
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:
Serialize and Deserialize Binary Tree
What is the serialized output of this tree using level order traversal?
__ 350
|
__ 75 ______
| |
25 _ ___ 200
| |
50 100
[350, 75, 25, 50, 200, 100]
[350, 75, 25, 200, 50, 100]
[25, 50, 75, 100, 200, 350]
[50, 25, 100, 200, 75, 350]
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in serialize_deserialize.js
in the following coding playground.
// Definition of a binary tree node// class TreeNode {// constructor(data) {// this.data = data;// this.left = null;// this.right = null;// }// }import {TreeNode} from './ds_v1/BinaryTree.js';// Function to serialize tree into list of integers.export function serialize(root) {// Replace this placeholder return statement with your codereturn root;}// Function to deserialize integer list into a binary tree.export function deserialize(stream) {// Replace this placeholder return statement with your codereturn null;}