题目描述
请实现两个函数,分别用来序列化和反序列化二叉树。
示例:
你可以将以下二叉树:
1
/ \
2 3
/ \
4 5
序列化为 "[1,2,3,null,null,4,5]"
解题思路: 辅助队列法
- 这个题目主要是实现
数组构造二叉树和二叉树层序便利为数组的方法 - 在构造方法中: 我们使用辅助队列, 每次取出队头元素, 在元素list中拿出2个元素, 分别给队头元素的左右孩子赋值, 并且将左右孩子入队, 直到list为空
- 在解构方法中: 同样使用辅助队列, 将队头元素出队、遍历后, 将队头元素的左右孩子入队直到队列为空
示例代码
def serialize(root):
queue = [root]
res = []
while queue:
temp = queue.pop(0)
res.append(temp.val)
if temp.left:
queue.append(temp.left)
if temp.right:
queue.append(temp.right)
print(res)
return res
def deserialize(arr):
root = TreeNode(arr.pop(0))
queue = [root]
while queue:
temp = queue.pop(0)
if not arr:
break
temp.left = TreeNode(arr.pop(0))
queue.append(temp.left)
if not arr:
break
temp.right = TreeNode(arr.pop(0))
queue.append(temp.right)
return root
注: 题目中给的参数和返回值都是数组组成的字符串, 示例代码直接返回
二叉树的root和所有元素的list