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 an array of integers, and then, deserialize it back from the array to a tree. For simplicity’s sake, there’s no need to write the array 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 main.go
in the following coding playground.
// Definition of a binary tree node// type TreeNode[T any] struct {// Data T// Left *TreeNode[T]// Right *TreeNode[T]// }package mainimport (. "golang-test-code/ds_v1/BinaryTree") // TreeNode[T]func serialize(root *TreeNode[int]) []string {// Replace this placeholder return statement with your codereturn make([]string, 0)}func deserialize (stream *[]string) *TreeNode[int] {// Replace this placeholder return statement with your codereturn nil}