297. Serialize and Deserialize Binary Tree
Tags:
Hard
Skills:
Tree
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Approach - sử dụng preorder traversal
Time and space complexity
Solution - serialize & deserialize using pre-order
1/**
2 * Definition for a binary tree node.
3 * class TreeNode {
4 * val: number
5 * left: TreeNode | null
6 * right: TreeNode | null
7 * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8 * this.val = (val===undefined ? 0 : val)
9 * this.left = (left===undefined ? null : left)
10 * this.right = (right===undefined ? null : right)
11 * }
12 * }
13 */
14
15/*
16 * Encodes a tree to a single string.
17 */
18function serialize(root: TreeNode | null): string {
19 if (root === null) return "#";
20
21 function dfs(node: TreeNode | null): string {
22 if (node === null) return "#";
23 let s = `${node.val},` + dfs(node.left) + "," + dfs(node.right);
24 return s;
25 }
26
27 const res = dfs(root);
28 return res;
29};
30
31/*
32 * Decodes your encoded data to tree.
33 */
34function deserialize(data: string): TreeNode | null {
35 const queue = data.split(',')
36
37 function dfs(): TreeNode | null {
38 const val = queue.shift()!;
39 if (val === "#") return null;
40
41 const node = new TreeNode(Number(val));
42 node.left = dfs();
43 node.right = dfs();
44 return node;
45 }
46
47 const res = dfs();
48 return res
49};
50
51
52/**
53 * Your functions will be called as such:
54 * deserialize(serialize(root));
55 */