Practice
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Frontend UI Machine Coding
Resources
Career Advice and Roadmaps
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Backend Development
Frontend Development
Project Ideas for Software Developers
Core Computer Science
Companies
SDE Jobs & Internships
Interview Questions
Compare Companies
IDE
Online IDE
Collaborative IDE

DFS of a Cyclic Graph Editorial

DSA Editorial, Solution and Code

Practice Problem Link: DFS of a Cyclic Graph

Please make sure to try solving the problem yourself before looking at the editorial.

Problem Statement

Given a graph compute its DFS traversal.

The graph has n nodes indexed 0 to n-1. It is given in the form of an adjacency list.

Compute the DFS from the node indexed 0. Follow the order given in the adjacency list when choosing path.

Approach

  • Start from the root node and mark the node as visited.
  • Add the marked node in the answer array.
  • Now traverse its adjacent nodes and for every unmarked adjacent node recursively repeat the above steps.

Analysis

  • Time Complexity: O(V + E)
  • Auxiliary Space Complexity: O(V)

Where V is the number of nodes and E is the number of edges.

Implementation

C++
void dfsUtil(int root, vector<vector<int>> &adjList, vector<int> &traversal, vector<bool> &isVisited) {
	isVisited[root] = true;
	traversal.push_back(root);
	for(int i = 0; i < adjList[root].size(); i++) {
		int node = adjList[root][i];
		if (isVisited[node] == false) {
			dfsUtil(node, adjList, traversal, isVisited);
		}
	}
}
vector<int> dfs(vector<vector<int>> adjList) {
	vector<int> traversal;
	vector<bool> isVisited (adjList.size(), false);
    dfsUtil(0, adjList, traversal, isVisited);
	return traversal;
}
Java
class Solution {
	void dfsUtil(int root, ArrayList<Integer>[] adjList, ArrayList<Integer> traversal, boolean[] isVisited) {
		isVisited[root] = true;
		traversal.add(root);
		for(int i = 0; i < adjList[root].size(); i++) {
			int node = adjList[root].get(i);
			if (isVisited[node] == false) {
				dfsUtil(node, adjList, traversal, isVisited);
			}
		}
	}
    ArrayList<Integer> dfs(ArrayList<Integer>[] adjList) {
        ArrayList<Integer> traversal = new ArrayList<Integer>();
		boolean[] isVisited = new boolean[adjList.length];
		dfsUtil(0, adjList, traversal, isVisited);
		return traversal;
    }
}
Related Content
Adjacency List to Adjacency Matrix
Adjacency Matrix to Adjacency List
BFS of a Graph
Capture Surrounded Regions
Clone a Graph
DFS of an Acyclic Graph
Edges to Adjacency List
Flood Fill Image
Knight's Journey On A Chessboard
M-Coloring Problem
Number of Islands
Stepping Numbers
Valid Path
Word Search Board
SDE Bootcamp - Become a software engineer at a product-based company
Practice Data Structures & Algorithms
Learning Resources
Interview Prep Resources
Community
Join our community
Blog
  • Career Advice and Roadmaps
  • Data Structures & Algorithms
  • Machine Coding Round (LLD)
  • System Design & Architecture
  • Backend Development
  • Frontend Development
  • Awesome Project Ideas
  • Core Computer Science
Practice Questions
  • Machine Coding (LLD) Questions
  • System Design (HLD) Questions
  • Topic-wise DSA Questions
  • Company-wise DSA Questions
  • DSA Sheets (Curated Lists)
  • JavaScript Interview Questions
  • Frontend UI Machine Coding Questions
Online Compilers (IDE)
  • Online Java Compiler
  • Online C++ Compiler
  • Online C Compiler
  • Online Python Compiler
  • Online JavaScript Compiler
Topic-wise Problems
  • Dynamic Programming Interview Questions
  • Linked List Interview Questions
  • Graph Interview Questions
  • Backtracking Interview Questions
  • Arrays Interview Questions
  • Trees Interview Questions
Company-wise Problems
  • Amazon Interview Questions
  • Microsoft Interview Questions
  • Google Interview Questions
  • Flipkart Interview Questions
  • Adobe Interview Questions
  • Facebook Interview Questions
DSA Sheets (Curated Lists)
  • Top Interview Questions
  • FAANG Interview Questions
  • Most Asked Interview Questions
  • 6 month DSA Practice Sheet
  • 3 month DSA Practice Sheet
  • Last minute DSA Practice Sheet