问题:
题目来源:力扣(LeetCode)
难度:困难
分析:
使用DFS和BFS两种方法实现
解决方法:
1:DFS
class Codec:
def serialize(self, root):
res=[]
stack=[root]
while stack:
node=stack.pop()
if node:
res.append(node.val)
stack.append(node.right)
stack.append(node.left)
else:
res.append(None)
return res
def deserialize(self, data):
self.index=0
def dfs(data):
if data[self.index]==None:
self.index+=1
return
root=TreeNode(data[self.index])
self.index+=1
root.left=dfs(data)
root.right=dfs(data)
return root
return dfs(data)
2:BFS
class Codec:
def serialize(self, root):
res=[]
q=[root]
while q:
node=q.pop(0)
if node:
res.append(node.val)
q.append(node.left)
q.append(node.right)
else:
res.append(None)
return res
def deserialize(self, data):
root=TreeNode(data[0])
q=[root]
index=1
while q:
node=q.pop(0)
if data[index]!=None:
node.left=TreeNode(data[index])
q.append(node.left)
if data[index+1]!=None:
node.right=TreeNode(data[index+1])
q.append(node.right)
index+=2
return root