from coollections import deque
class Solution:
def serialize(self,root):
if not root:
return ""
queue=deque()
queue.append(root)
res=str(root.val)+'_'
while queue:
node=queue.popleft()
if node.left:
queue.append(node.left)
res+=str(node.left.val)+'_'
else:
res+='#_'
if node.right:
queue.append(node.right)
res+=str(node.right.val)+'_'
else:
res+='#_'
return res
def deserialize(self,data):
if not data:
return
arr=data.split('_')
root=TreeNode(int(arr[0]))
queue=deque()
queue.append(root)
i=1 ##
while i<len(arr)-1: #序列化的适合最后一个后面是_结尾,所以split('_')之后,长度要-1
node=queue.popleft()
if arr[i]!='#':
left=TreeNode(int(arr[i])
node.left=left
queue.append(left)
if i+1 <len(arr)-1 and arr[i+1]!='#':
right=TreeNode(int(arr[i+1]))
node.right=right
queue.append(right)
i+=2 #一次性将左右子树都解序列化
return root
297. 二叉树的序列化与反序列化 BFS方法
最新推荐文章于 2022-07-02 19:42:15 发布