DFS(深度优先搜索 适合搜索全部解 在空间上有优势 因为不用保存搜索过程中的状态)
BFS(广度优先搜索 适合最优解 在空间上需要用一个队列来保存搜索过程)
一般情况下 DFS都是用递归来写算法 BFS需要手动维护一个队列queue
DFS代码-递归写法 模板(记住)
visited=set()
def dfs(node,visited):
visited.add(node)
#process
current node here
…
for
next_node in node.children():
if
not next_node in visited:
dfs(next
node,visited)
BFS代码模板
def BFS(Graph,start,end):
queue=[]
queue.append([start])
visited.add(start)
while
queue:
node=queue.pop()
visited.add(node)
process(node)
nodes=generate_related_nodes(node)
queue.push(nodes)
#other
processing work
…
二叉树的层次遍历(解法:BFS)
calss Sulotion{
public
List<List> levelOrder(TreeNode root){
List<List>