Skip to Content
🧮 CTDL & Giải thuật🗺️ Duyệt đồ thị (BFS/DFS)

Duyệt đồ thị (BFS/DFS)

Tổng quan

BFSDFS
TênBreadth-First SearchDepth-First Search
Cấu trúcQueueStack/Recursion
Đường đi ngắn nhất✅ (unweighted)
from collections import deque def bfs(graph, start): visited = set([start]) queue = deque([start]) result = [] while queue: node = queue.popleft() result.append(node) for neighbor in graph.get(node, []): if neighbor not in visited: visited.add(neighbor) queue.append(neighbor) return result
def dfs(graph, start, visited=None): if visited is None: visited = set() visited.add(start) result = [start] for neighbor in graph.get(start, []): if neighbor not in visited: result.extend(dfs(graph, neighbor, visited)) return result

Number of Islands

def num_islands(grid): if not grid: return 0 rows, cols = len(grid), len(grid[0]) count = 0 def dfs(r, c): if r < 0 or r >= rows or c < 0 or c >= cols or grid[r][c] == '0': return grid[r][c] = '0' dfs(r + 1, c) dfs(r - 1, c) dfs(r, c + 1) dfs(r, c - 1) for r in range(rows): for c in range(cols): if grid[r][c] == '1': count += 1 dfs(r, c) return count

🎉

Hoàn thành! Chúc mừng bạn đã hoàn thành loạt bài về CTDL & Giải thuật! Tiếp tục thực hành trên LeetCode  để củng cố kiến thức.

Last updated on