對於廣度優先遍歷而言,我們可以用迭代的方法輕松求解,但是對於遞歸,就很難了,也很難記憶 ,因此這里給出BFS的迭代解法,這個function會根據BFS的順序依次打印出我們訪問的節點,有點小trick,代碼如下:
def bfs_level_order_traversal(node): if node is None: return None L = [node] while len(L) > 0: current_node = L.pop(0) print(current_node)
for child in current_node.children: if child is not None: L.append(child)
這算法一看就懂,無需多言。linux曾經說道:“talk is cheap ,show me the code”,我們要充分落實linux的思想,才能學好計算機。