溧阳常州做网站,数据模型搭建工具,哈尔滨网站设计公司地址,wordpress多语模板代码思路#xff1a;使用队列先进先出的特性#xff0c;queue[]不为空进入for循环#xff0c;tmp存储每层的节点#xff0c;将结果添加至res[]中。 python中使用collections中的双端队列deque()#xff0c;其popleft()方法可达到O(1)时间复杂度。
class Solution:def lev… 代码思路使用队列先进先出的特性queue[]不为空进入for循环tmp存储每层的节点将结果添加至res[]中。 python中使用collections中的双端队列deque()其popleft()方法可达到O(1)时间复杂度。
class Solution:def levelOrder(self, root: Optional[TreeNode]) - List[List[int]]:if not root:return[]res,queue [],collections.deque()queue.append(root)while queue:tmp []for _ in range(len(queue)): #len(queue)的长度不为null就进入循环node queue.popleft()tmp.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right) res.append(tmp)return res列表的方法一般只支持尾部例如pop、append但是对于一些队列问题需要在头部操作则需要使用pop(0)、insert(0,x)等方法不太方便Python的collections包中的双端队列deque很好地解决了这个问题增加了头部方法popleft、appendleft等。
from collections import dequealist[a,b,c,d]
dqdeque(alist)
print(dq.pop())
print(dq.popleft())
print(dq)
dq.appendleft(e)
print(dq)
d
a
deque([b, c])
deque([e, b, c])