[DSA] Graph Traversal
![[DSA] Graph Traversal](https://cdn.hashnode.com/res/hashnode/image/upload/v1752495638510/f2d535de-1f28-4b13-b471-8f408c7a9c72.webp)
Giới thiệu
Có 2 cách duyệt Graph:
Depth First Search (DFS)
Breadth First Search (BFS)

Depth First Search (DFS)
Có 2 cách để thực thi DFS
Dùng đệ quy
Dùng vòng lặp
DFS Recursive
depthFirstRecursive(start) {
const result = [];
const visited = {};
(function dfs(vertex) {
if (!vertex) {
return null;
}
visited[vertex] = true;
result.push(vertex);
console.log(this.adjacencyList[vertex]);
})(start);
}
DFS Iterative
depthFirstIterative(start) {
const stack = [start];
const result = [];
const visited = {};
let currentVertex;
visited[start] = true;
while (stack?.length) {
currentVertex = stack.pop();
result.push(currentVertex);
this.adjacencyList[currentVertex]?.forEach((neighbor) => {
if (!visited[neighbor]) {
visited[neighbor] = true;
stack.push(neighbor);
}
});
}
return result;
}
Breadth First Search (DFS)
breadthFirst(start) {
const queue = [start];
const result = [];
const visited = {};
let currentVertex;
visited[start] = true;
while (queue?.length) {
currentVertex = queue.shift();
result.push(currentVertex);
this.adjacencyList[currentVertex]?.forEach((neighbor) => {
if (!visited[neighbor]) {
visited[neighbor] = true;
queue.push(neighbor);
}
});
}
return result;
}
![[DSA] Graphs](https://cdn.hashnode.com/res/hashnode/image/upload/v1750257831609/5d62aebd-3cd9-4ba9-9904-4e998b46d29c.png)
![[DSA] Hash table](https://cdn.hashnode.com/res/hashnode/image/upload/v1750167172887/8856c6d8-9d16-40e4-ab4f-e1e1dd9bae31.png)
![[Terraform] Xử lý khác biệt giữa Cloud và Terraform state](https://cdn.hashnode.com/res/hashnode/image/upload/v1744814931301/b9f73c31-ad88-45ab-9e16-ed347756ae59.png)
![[DSA] Binary Heaps, Priority Queue](https://cdn.hashnode.com/res/hashnode/image/upload/v1742485138726/04c206f5-8534-4345-9400-e5da61cda6dc.png)