Skip to content

Commit 9053b91

Browse files
committed
serialize and deserialize binary tree.py
1 parent ea54a5d commit 9053b91

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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()

0 commit comments

Comments
 (0)