import [Link].
*;
public class Main {
static class Graph {
private int V;
private List<List<Integer>> adj;
Graph(int V) {
this.V = V;
adj = new ArrayList<>();
for (int i = 0; i < V; i++) {
[Link](new ArrayList<>());
}
}
// Undirected edge
void addEdge(int u, int v) {
[Link](u).add(v);
[Link](v).add(u);
}
// BFS traversal
void bfs(int start) {
boolean[] visited = new boolean[V];
Queue<Integer> queue = new LinkedList<>();
visited[start] = true;
[Link](start);
while (![Link]()) {
int node = [Link]();
[Link](node + " ");
for (int neighbour : [Link](node)) {
if (!visited[neighbour]) {
visited[neighbour] = true;
[Link](neighbour);
}
}
}
}
// DFS traversal (recursive)
void dfs(int start) {
boolean[] visited = new boolean[V];
dfsHelper(start, visited);
}
void dfsHelper(int node, boolean[] visited) {
visited[node] = true;
[Link](node + " ");
for (int neighbour : [Link](node)) {
if (!visited[neighbour]) {
dfsHelper(neighbour, visited);
}
}
}
}
public static void main(String[] args) {
Graph g = new Graph(5);
[Link](0, 1);
[Link](0, 2);
[Link](1, 3);
[Link](2, 4);
[Link]("BFS Traversal: ");
[Link](0);
[Link]("\nDFS Traversal: ");
[Link](0);
}
}