Related Articles
DFS for a n-ary tree (acyclic graph) represented as adjacency list
• Difficulty Level : Medium
• Last Updated : 12 Mar, 2019

A tree consisting of n nodes is given, we need to print its DFS.

Examples :

Input : Edges of graph
1 2
1 3
2 4
3 5
Output : 1 2 4 3 5

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A simple solution is to do implement standard DFS.

We can modify our approach to avoid extra space for visited nodes. Instead of using the visited array, we can keep track of parent. We traverse all adjacent nodes but the parent.

Below is the implementation :

## C++

 /* CPP code to perform DFS of given tree : */ #include using namespace std;    // DFS on tree void dfs(vector list[], int node, int arrival) {     // Printing traversed node     cout << node << '\n';        // Traversing adjacent edges     for (int i = 0; i < list[node].size(); i++) {            // Not traversing the parent node         if (list[node][i] != arrival)             dfs(list, list[node][i], node);     } }    int main() {     // Number of nodes     int nodes = 5;        // Adjacency list     vector list[10000];        // Designing the tree     list[1].push_back(2);     list[2].push_back(1);        list[1].push_back(3);     list[3].push_back(1);        list[2].push_back(4);     list[4].push_back(2);        list[3].push_back(5);     list[5].push_back(3);        // Function call     dfs(list, 1, 0);        return 0; }

## Python3

 # Python3 code to perform DFS of given tree :    # DFS on tree  def dfs(List, node, arrival):            # Printing traversed node      print(node)        # Traversing adjacent edges     for i in range(len(List[node])):            # Not traversing the parent node          if (List[node][i] != arrival):             dfs(List, List[node][i], node)    # Driver Code if __name__ == '__main__':        # Number of nodes      nodes = 5        # Adjacency List      List = [[] for i in range(10000)]        # Designing the tree      List[1].append(2)      List[2].append(1)         List[1].append(3)      List[3].append(1)         List[2].append(4)      List[4].append(2)         List[3].append(5)      List[5].append(3)         # Function call      dfs(List, 1, 0)    # This code is contributed by PranchalK

## C#

Output:

1
2
4
3
5

This article is contributed by Rohit Thapliyal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :