題目:
思路+代碼:
import queue
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
# 思路:使用棧保存每層從左至右的左節點和右節點,一個list保存層序遍歷節點的值;
# 用list實現
if not root:return []
res, node_list = [],[]
node_list.append(root)
while node_list:
node = node_list.pop(0)
res.append(node.val)
if node.left: node_list.append(node.left)
if node.right: node_list.append(node.right)
return res
# 用隊列實現
if not root:return []
q = queue.Queue()
q.put(root)
res = []
while q.qsize() > 0: # 不能寫while q, q始終是一個對象,會時間超時
node = q.get()
res.append(node.val)
if node.left:q.put(node.left)
if node.right: q.put(node.right)
return res
# 雙端隊列實現
if not root: return []
res, queue = [], collections.deque()
queue.append(root)
while queue:
node = queue.popleft()
res.append(node.val)
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
return res