class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Codec:
def serialize(self, root):
if not root:
return '[]'
from collections import deque
queue = deque()
result = []
p = root
queue.append(p)
while queue:
p = queue.popleft()
if p:
result.append(str(p.val))
queue.append(p.left)
queue.append(p.right)
else:
result.append('null')
return f"[{','.join(result)}]"
def deserialize(self, data: str):
if data == '[]':
return None
data = data[1:-1].split(',')
from collections import deque
queue = deque()
root = TreeNode(int(data[0]))
p = root
queue.append(p)
i = 1
while queue:
p = queue.popleft()
if data[i] != 'null':
p.left = TreeNode(int(data[i]))
queue.append(p.left)
i += 1
if data[i] != 'null':
p.right = TreeNode(int(data[i]))
queue.append(p.right)
i += 1
return root