File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed
serialize-and-deserialize-binary-tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change 1+ class TreeNode {
2+ val : number ;
3+ left : TreeNode | null ;
4+ right : TreeNode | null ;
5+ constructor ( val ?: number , left ?: TreeNode | null , right ?: TreeNode | null ) {
6+ this . val = val === undefined ? 0 : val ;
7+ this . left = left === undefined ? null : left ;
8+ this . right = right === undefined ? null : right ;
9+ }
10+ }
11+
12+ /*
13+ * Encodes a tree to a single string.
14+ */
15+
16+ // TC: O(n)
17+ // SC: O(n)
18+ function serialize ( root : TreeNode | null ) : string {
19+ if ( ! root ) return "null" ;
20+ return `${ root . val } ,${ serialize ( root . left ) } ,${ serialize ( root . right ) } ` ;
21+ }
22+
23+ /*
24+ * Decodes your encoded data to tree.
25+ */
26+
27+ // TC: O(n)
28+ // SC: O(n)
29+ function deserialize ( data : string ) : TreeNode | null {
30+ const values = data . split ( "," ) ;
31+ let idx = 0 ;
32+
33+ const dfs = ( ) => {
34+ if ( values [ idx ] === "null" ) {
35+ idx ++ ;
36+ return null ;
37+ }
38+
39+ const node = new TreeNode ( parseInt ( values [ idx ] ) ) ;
40+ idx ++ ;
41+ node . left = dfs ( ) ;
42+ node . right = dfs ( ) ;
43+ return node ;
44+ } ;
45+
46+ return dfs ( ) ;
47+ }
48+
49+ /**
50+ * Your functions will be called as such:
51+ * deserialize(serialize(root));
52+ */
You can’t perform that action at this time.
0 commit comments