题目描述
方法:
BFS层序遍历,注意“null”
# Definition for a binary tree node.
# 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 "[]"
meeted = [root]
record = []
nonone = 0
while meeted:
rootnode = meeted.pop(0)
if rootnode:
record.append(str(rootnode.val))
nonone += 1
meeted.append(rootnode.left)
meeted.append(rootnode.right)
else:
record.append("null")
for i,num in enumerate(record):
if nonone == 0:
record = record[:i]
break
if record[i] != "null":
nonone -= 1
# print('[' + ",".join(record)+ "]")
return '[' + ",".join(record)+ "]"
def deserialize(self, data):
"""Decodes your encoded data to tree.
:type data: str
:rtype: TreeNode
"""
if data == "[]":
return
node = data[1:-1].split(',')
root = TreeNode(int(node[0]))
i = 1
record = [root]
while record:
if i >= len(node):
break
rootnode = record.pop(0)
if node[i] != "null":
rootnode.left = TreeNode(int(node[i]))
record.append(rootnode.left)
i += 1
if i >= len(node):
break
if node[i] != "null":
rootnode.right = TreeNode(int(node[i]))
record.append(rootnode.right)
i += 1
return root