class Codec:
def serialize(self, root):
if not root: return "[]"
queue = collections.deque()
queue.append(root)
res=[]
while queue:
node = queue.popleft()
if node:
res.append(str(node.val))
queue.append(node.left)
queue.append(node.right)
else:
res.append("null")
return '['+','.join(res)+']'
def deserialize(self, data):
if data == "[]":
return None
vals = data[1:-1].split(',')
i = 1
root = TreeNode(int(vals[0]))
queue = collections.deque()
queue.append(root)
while queue:
node = queue.popleft()
if vals[i] != "null":
node.left = TreeNode(int(vals[i]))
queue.append(node.left)
i += 1
if vals[i] != "null":
node.right = TreeNode(int(vals[i]))
queue.append(node.right)
i += 1
return root
测试用例
codec = Codec()
root = codec.deserialize("[1,2,3,null,null,4,5,null,null,null,null]")
print(codec.serialize(root))