File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed
serialize-and-deserialize-binary-tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * [Problem]: [297] Serialize and Deserialize Binary Tree
3
+ * (\https://leetcode.com/problems/serialize-and-deserialize-binary-tree/description/)
4
+ */
5
+
6
+ class TreeNode {
7
+ val : number ;
8
+ left : TreeNode | null ;
9
+ right : TreeNode | null ;
10
+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
11
+ this . val = val === undefined ? 0 : val ;
12
+ this . left = left === undefined ? null : left ;
13
+ this . right = right === undefined ? null : right ;
14
+ }
15
+ }
16
+
17
+ /*
18
+ * Encodes a tree to a single string.
19
+ */
20
+ //시간복잡도 O(N)
21
+ //공간복잡도 O(N)
22
+ function serialize ( root : TreeNode | null ) : string {
23
+ if ( ! root ) return "NULL" ;
24
+
25
+ const left = serialize ( root . left ) ;
26
+ const right = serialize ( root . right ) ;
27
+
28
+ return `${ root . val } ,${ left } ,${ right } ` ;
29
+ }
30
+
31
+ /*
32
+ * Decodes your encoded data to tree.
33
+ */
34
+ //시간복잡도 O(N)
35
+ //공간복잡도 O(N)
36
+ function deserialize ( data : string ) : TreeNode | null {
37
+ const values = data . split ( "," ) ;
38
+ let index = 0 ;
39
+
40
+ function dfs ( ) : TreeNode | null {
41
+ if ( values [ index ] === "NULL" ) {
42
+ index ++ ;
43
+ return null ;
44
+ }
45
+ const node = new TreeNode ( + values [ index ++ ] ) ;
46
+
47
+ node . left = dfs ( ) ;
48
+ node . right = dfs ( ) ;
49
+
50
+ return node ;
51
+ }
52
+
53
+ return dfs ( ) ;
54
+ }
You can’t perform that action at this time.
0 commit comments