BFS DFS
BFS DFS
Page 1 of 5
void bfs(int adj[][N],int visited[],int start) { int q[N],rear=-1,front=-1,i; q[++rear]=start; visited[start]=1; while(rear != front) { start = q[++front]; if(start==9) printf("10\t"); else printf("%c \t",start+49); //change to 65 in case of alphabets for(i=0;i<N;i++) { if(adj[start][i] && !visited[i]) { q[++rear]=i; visited[i]=1; } }
} }
int main() { int visited[N]={0}; int adj[N][N]={{0,1,1,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,0,1}, {0,0,0,0,1,0,1,0,0,0}, {1,0,1,0,0,1,1,0,0,1}, {0,0,0,0,0,0,1,1,0,0}, {0,0,0,1,0,0,0,1,0,0}, {0,0,0,0,0,0,0,1,1,1}, {0,0,1,0,0,0,0,0,0,0}, {0,0,0,1,0,0,0,0,0,0}, {0,0,1,0,0,0,0,1,1,0}}; bfs(adj,visited,0); return 0; }
Page 2 of 5
int adj[MAX][MAX]={{0,0,1,1,0},{0,0,0,0,0},{0,1,0,1,1},{0,0,0,0,1},{0,0,0,1,0}}; int visited[MAX]={0}; printf("DFS Traversal : "); dfs(adj,visited,0); printf("\n"); } return 0;
Page 3 of 5
BFS LIST /*Program that implements breadth first search algorithm*/ #include <stdio.h> #include <conio.h> #include <alloc.h> #define TRUE 1 #define FALSE 0 #define MAX 8 struct node { int data ; struct node *next ; }; int visited[MAX] ; int q[8] ; int front, rear ; void bfs ( int, struct node ** ) ; struct node * getnode_write ( int ) ; void addqueue ( int ) ; int deletequeue( ) ; int isempty( ) ; void del ( struct node * ) ; void main( ) { struct node *arr[MAX] ; struct node *v1, *v2, *v3, *v4 ; int i ; clrscr( ) ; v1 = getnode_write ( 2 ) ; arr[0] = v1 ; v1 -> next = v2 = getnode_write ( 3 ) ; v2 -> next = NULL ; v1 = getnode_write ( 1 ) ; arr[1] = v1 ; v1 -> next = v2 = getnode_write ( 4 ) ; v2 -> next = v3 = getnode_write ( 5 ) ; v3 -> next = NULL ; v1 = getnode_write ( 1 ) ; arr[2] = v1 ; v1 -> next = v2 = getnode_write ( 6 ) ; v2 -> next = v3 = getnode_write ( 7 ) ;
v3 -> next = NULL ; v1 = getnode_write ( 2 ) ; arr[3] = v1 ; v1 -> next = v2 = getnode_write ( 8 ) ; v2 -> next = NULL ; v1 = getnode_write ( 2 ) ; arr[4] = v1 ; v1 -> next = v2 = getnode_write ( 8 ) ; v2 -> next = NULL ; v1 = getnode_write ( 3 ) ; arr[5] = v1 ; v1 -> next = v2 = getnode_write ( 8 ) ; v2 -> next = NULL ; v1 = getnode_write ( 3 ) ; arr[6] = v1 ; v1 -> next = v2 = getnode_write ( 8 ) ; v2 -> next = NULL ; v1 = getnode_write ( 4 ) ; arr[7] = v1 ; v1 -> next = v2 = getnode_write ( 5 ) ; v2 -> next = v3 = getnode_write ( 6 ) ; v3 -> next = v4 = getnode_write ( 7 ) ; v4 -> next = NULL ; front = rear = -1 ; bfs ( 1, arr ) ; for ( i = 0 ; i < MAX ; i++ ) del ( arr[i] ) ; getch( ) ; } void bfs ( int v, struct node **p ) { struct node *u ; visited[v - 1] = TRUE ; printf ( "%d\t", v ) ; addqueue ( v ) ; while ( isempty( ) == FALSE ) { v = deletequeue( ) ; u=*(p+v-1); while ( u != NULL )
Page 4 of 5
void levelOrderTraversal(mynode *root); int main(int argc, char* argv[]) { root = NULL; add_node(5); add_node(1); add_node(-20); add_node(100); add_node(23); add_node(67); add_node(13); printf("\n\n\nLEVEL ORDER TRAVERSAL\n\n"); levelOrderTraversal(root); getch();
Page 5 of 5
} root = queue[queue_pointer++]; } }