BFS
思路
利用queue
模板
from collections import deque
def bfs(self, root):
if not root:
return []
queue = deque()
queue.appen(root)
result = []
visited = {}
while queue:
cur = queue.popleft()
result.append(cur)
for neighbour in cur.neighbours:
if neighbour not in visited:
queue.append(neighbour)
questions
- Binary Tree Level Order Traversal
- 用两个变量current level和next level的node数量
- Binary Tree Level Order Traversal II
- reverse
- Binary Tree ZigZag level order Traversal
- 根据层数reverse
- Binary Tree Right Side View
- 输出每层的最后一个
- Populate next right pointer I & II(non-complete tree)
- space
O(n)将level order traversal的code稍作改变就可以 - space
O(1)- I,只要保持最左边的node,然后对当前层遍历set next就可以
- II, 因为non-complete,所以不一定是最左边开始层,要根据上面一层来set 当前层的next
- space
- word ladder I & II