Skip to content

Instantly share code, notes, and snippets.

@prasadwrites
Last active August 29, 2015 14:05
Show Gist options
  • Save prasadwrites/26a92f0fa0b1ce1a89b6 to your computer and use it in GitHub Desktop.
Save prasadwrites/26a92f0fa0b1ce1a89b6 to your computer and use it in GitHub Desktop.
BFS algorithm
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
node *left, *right;
}node;
//prototypes of functions
int height (node *);
void printLevelOrder(node *);
void printGivenLevel(node *, int level);
node * newNode(int data);
int height(node *temp)
{
if (temp == NULL)
{
return 0;
}
else
{
int lheight = height(temp->left);
int rheight = height(temp->right);
if(lheight>rheight)
return (lheight+1);
else
return (rheight+1);
}
}
void printLevelOrder(node *temp)
{
if (temp == NULL)
{
printf("Tree is empty");
return;
}
int h = height(temp);
for(int i=1; i<=h; i++)
{
printf("\n");
printGivenLevel(temp , i);
}
}
void printGivenLevel(node *temp , int level)
{
if(temp == NULL)
return;
if (level == 1)
printf("%d", temp->data);
else
{
printGivenLevel(temp->left, level-1);
printGivenLevel(temp->right, level-1);
}
}
node * newNode(int data)
{
/* struct node* node = (struct node*)
malloc(sizeof(struct node));
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);*/
node * temp = (node *) malloc(sizeof(node));
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
int main()
{
node *root = newNode(1);
root->left = newNode(2);
root->right = newNode(3);
root->left->left = newNode(4);
root->left->right = newNode(5);
printf("Level Order traversal of binary tree is \n");
printLevelOrder(root);
getchar();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment