Serializing a tree turns it into a string, so it can be saved in a file or sent over a network. Deserializing rebuilds the same tree from that string.
Implement the class Codec:
serialize(root)gets the root of a binary tree, which may be empty, and returns a string.deserialize(data)gets a string made byserializeand returns the root of the same tree: the same shape, with the same value in every node.
The string's format is up to you. The tests serialize each tree with one Codec, rebuild it with a second Codec's deserialize, and print the rebuilt tree level by level, from left to right, with null where a child is missing and the trailing nulls left out. The trees below are written the same way. serialize must return a string. The starter code spells these names the way your language does.
Example 1:
Input: root = [1,2,3,null,null,4,5]
Output: [1,2,3,null,null,4,5]
1
/ \
2 3
/ \
4 5
Explanation: One string that works lists the nodes in preorder, with # for a missing child: "1,2,#,#,3,4,#,#,5,#,#". Reading it back gives the same tree.
Example 2:
Input: root = [] Output: [] Explanation: The empty tree needs a string too, for example "#", and deserialize gives back an empty tree.
Example 3:
Input: root = [-1,0,null,null,-100]
Output: [-1,0,null,null,-100]
-1
/
0
\
-100
Explanation: Values can be negative and have several digits. With commas between the pieces, as in "-1,0,#,-100,#,#,#", every value is read back whole.
Constraints:
- The number of nodes in the tree is in the range
[0, 2 * 105]. - Each node value is between
-1000and1000. - The tree is at most
400levels deep.
Note:
Both serialize and deserialize should run in O(n) time, where n is the number of nodes.
Free plan: 30 tutor messages. Premium is unlimited.
