File tree 1 file changed +45
-0
lines changed
1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ class TreeNode (object ):
3
+ def __init__ (self , x ):
4
+ self .val = x
5
+ self .left = None
6
+ self .right = None
7
+ # serialize
8
+ # look left node first then right node
9
+ # if null return N else append string val
10
+
11
+ # deserialize
12
+ # split the value using , as identifier
13
+ #
14
+
15
+
16
+ class Codec :
17
+ def serialize (self , root ):
18
+ res = []
19
+
20
+ def dfs (node ):
21
+ if not node :
22
+ res .append ("N" )
23
+ return
24
+ res .append (str (node .val ))
25
+ dfs (node .left )
26
+ dfs (node .right )
27
+
28
+ dfs (root )
29
+ return "," .join (res )
30
+
31
+ def deserialize (self , data ):
32
+ vals = data .split ("," )
33
+ self .i = 0
34
+
35
+ def dfs ():
36
+ if vals [self .i ] == "N" :
37
+ self .i += 1
38
+ return None
39
+ node = TreeNode (int (vals [self .i ]))
40
+ self .i += 1
41
+ node .left = dfs ()
42
+ node .right = dfs ()
43
+ return node
44
+
45
+ return dfs ()
You can’t perform that action at this time.
0 commit comments