c語言和c 哪個做網(wǎng)站好網(wǎng)絡(luò)營銷方案的范文
代碼思路:使用隊(duì)列先進(jìn)先出的特性,queue[]不為空進(jìn)入for循環(huán),tmp存儲每層的節(jié)點(diǎn),將結(jié)果添加至res[]中。
python中使用collections中的雙端隊(duì)列deque(),其popleft()方法可達(dá)到O(1)時間復(fù)雜度。
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就進(jìn)入循環(huán)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,但是對于一些隊(duì)列問題,需要在頭部操作,則需要使用pop(0)、insert(0,x)等方法,不太方便,Python的collections包中的雙端隊(duì)列deque很好地解決了這個問題,增加了頭部方法popleft、appendleft等。
from collections import dequealist=['a','b','c','d']
dq=deque(alist)
print(dq.pop())
print(dq.popleft())
print(dq)
dq.appendleft('e')
print(dq)
d
a
deque(['b', 'c'])
deque(['e', 'b', 'c'])