题目描述
blablabla
样例
blablabla
算法1
O(n2)
blablabla
时间复杂度分析:blablabla
P 代码
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#serialize()采用bfs,对当前二叉树搜索,遍历vector,将当前节点左右儿子依次存入vector,空节点需要删去。
#deserialize()首先切割字符串,然后用isLeft标记是当前是左右儿子,存为队列首节点的左右儿子。
class Solution:
def serialize(self, root):
"""Encodes a tree to a single string.
:type root: TreeNode
:rtype: str
"""
if not root:
return []
res = []
q = [root]
while q:
tmp = q.pop(0)
if not tmp:
res.append('null')
else:
res.append(tmp.val)
q.append(tmp.left)
q.append(tmp.right)
return res
def deserialize(self, data):
"""Decodes your encoded data to tree.
:type data: str
:rtype: TreeNode
"""
if len(data) == 0:
return None
if data[0] == 'null':
return None
root = TreeNode(data.pop(0))
q = [root]
isLeft = True
while data:
tmp = data.pop(0)
if tmp != 'null':
node = TreeNode(tmp)
q.append(node)
if isLeft:
q[0].left = node
else:
q[0].right = node
if not isLeft:
q.pop(0)
isLeft = not isLeft
return root
good
你好,这里有一个问题,这几行代码表示什么意思呢?没太看明白
if not isLeft: q.pop(0) isLeft = not isLeft