算法训练营09-深度优先和广度优先
生活随笔
收集整理的這篇文章主要介紹了
算法训练营09-深度优先和广度优先
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. dfs遍歷
- 1. 遞歸寫法
- 2. 非遞歸寫法
- 3. bfs代碼模板
1. 題目
實戰題目
二叉樹層級遍歷102
最小基因變化433
括號生成22
每一層當中的最大節點515
課后作業
127 單詞接龍
126 單詞接龍2
島嶼的數量200
529 掃雷游戲 529
2. dfs遍歷
感覺dfs一般用于路徑型問題求解,就是每個答案需要很多步完成,這種答案的個數是多少,就像是回溯遍歷一樣, 而深度優先則更傾向于快速到達某個位置的方法。
1. 遞歸寫法
visited = set()def dfs(node, visited):if node in visited: # terminator# already visitedreturnvisited.add(node)# process current node here....for next_node in node.children():if next_node not in visited:dfs(next_node, visited)2. 非遞歸寫法
借助一個stack
def DFS(self, root):if tree.root is None:return []visited, stack = [], [root]while stack:node = stack.pop()visited.add(node)process (node)# 生成相關的節點nodes = generate_related_nodes(node)stack.push(nodes)# other processing work...3. bfs代碼模板
一般都是借用一個queue
# Python def BFS(root):visited = set()queue = []queue.append([root])while queue:node = queue.pop()visited.add(node)process(node)nodes = generate_related_nodes(node)queue.push(nodes)# other processing work總結
以上是生活随笔為你收集整理的算法训练营09-深度优先和广度优先的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法训练营08-分治和回溯
- 下一篇: pacificA架构介绍