File tree 1 file changed +84
-0
lines changed
1 file changed +84
-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
+
8
+ class Codec :
9
+
10
+ def serialize (self , root ):
11
+ """Encodes a tree to a single string.
12
+
13
+ :type root: TreeNode
14
+ :rtype: str
15
+ """
16
+ if root == None :
17
+ return []
18
+
19
+ queue = deque ()
20
+ queue .append (root )
21
+ result = []
22
+
23
+ while queue :
24
+ item = queue .popleft ()
25
+
26
+ if item :
27
+ result .append (item .val )
28
+ queue .append (item .left )
29
+ queue .append (item .right )
30
+
31
+ else :
32
+ result .append ("null" )
33
+
34
+ print (result )
35
+ return result
36
+
37
+
38
+
39
+ def deserialize (self , data ):
40
+ """Decodes your encoded data to tree.
41
+
42
+ :type data: str
43
+ :rtype: TreeNode
44
+ """
45
+ self .elem_ptr = 0
46
+ def get_next_elem ():
47
+ # if self.elem_ptr < len(data) - 1:
48
+ self .elem_ptr += 1
49
+ return data [self .elem_ptr ]
50
+
51
+ if len (data ) == 0 :
52
+ return
53
+
54
+ root = TreeNode (data [0 ])
55
+
56
+ queue = deque ()
57
+ queue .append (root )
58
+
59
+ while queue and self .elem_ptr < len (data ) - 1 :
60
+ item = queue .popleft ()
61
+ print (item .val )
62
+
63
+ if item : #item exists, so add its children (even if they are null)
64
+ #add its left child
65
+ item .left = TreeNode (get_next_elem ())
66
+
67
+ #add its right child
68
+ item .right = TreeNode (get_next_elem ())
69
+
70
+ queue .append (item .left )
71
+ queue .append (item .right )
72
+
73
+ else : #item doesn't exist, so no need to children; advance elem_ptr
74
+ get_next_elem ()
75
+ get_next_elem ()
76
+
77
+ return root
78
+
79
+
80
+
81
+
82
+ # Your Codec object will be instantiated and called as such:
83
+ # codec = Codec()
84
+ # codec.deserialize(codec.serialize(root))
You can’t perform that action at this time.
0 commit comments