Depth First Search on 2D grid

Write a program to implement the depth-first search on a 2D grid.

Example 1:

Input: grid[][3]={{1,2,3},{4,5,6},{7,8,9}}
Output: 1 2 3 6 9 8 5 4 7

Approach:

Java

public class DFS2DGrid {
    static int visited[][] = null;

    public static void main(String[] args) {
        // 2d grid input
        int grid[][] = { { 123 }, { 456 }, { 789 } };
        // dimensions of the grid
        int n = 3, m = 3;
        visited = new int[3][3];
        System.out.println("DFS traversal of 2d grid is");
        dfs2Dgrid(00, n, m, grid);
    }

    // direction up,right,down,left
    static int dx[] = { -1010 };
    static int dy[] = { 010, -1 };

    // method to find the dfs traversal on 2d grid
    private static void dfs2Dgrid(int xint yint nint mint[][] grid) {
        // make the current cell as visited
        visited[x][y] = 1;
        // print the current node
        System.out.print(grid[x][y] + " ");
        // iterate for all the
        // directions
        for (int i = 0; i < 4; i++) {
            int newx = dx[i] + x;
            int newy = dy[i] + y;
            // if valid and not visited
            if (newx >= 0 && newx < n && newy >= 0 && newy < m && visited[newx][newy] == 0) {
                // call dfs function
                dfs2Dgrid(newx, newy, n, m, grid);
            }
        }

    }
}

C++

#include <bits/stdc++.h>
using namespace std;
//store the visted node
int visited[1001][1001];
//direction up,right,down,left
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
//function to find the 
//dfs traversal on 2d grid
void dfs2Dgrid(int x,int y,int n,int m,int grid[][3])
{
    //mark the current cell 
    //as visited
    visited[x][y]=1;
    //print the current node data
    cout<<grid[x][y]<<" ";
    //iterate for all the 
    //directions
    for(int i=0;i<4;i++)
      {
        //new x
        int newx=dx[i]+x;
        //new y
        int newy=dy[i]+y;
        //if valid and not visited
        if(newx>=0&&newx<n&&newy>=0&&newy<m&&visited[newx][newy]==0)
        {
            //call dfs function
                dfs2Dgrid(newx,newy,n,m,grid);
         }
      }
}
int main()
{
 //2d grid input
  int grid[][3]={{1,2,3},{4,5,6},{7,8,9}};
  //dimensions of the grid
  int n=3,m=3;
  cout<<"DFS traversal of 2d grid is\n";
  dfs2Dgrid(0,0,n,m,grid);
  return 0;
}


No comments:

Post a Comment