# C Program to Print Level of a Given Node in Binary Tree

• Write a C program to print level of a node in binary tree.
• Recursive function in C to find level of a given node in binary tree.

Given a binary tree and a node N, we have to print the level of node N in binary tree. To print the level of a node N, first of all we have to search it in binary tree. Here, we can use In Order, pre Order or post Order traversal to search node N in binary tree. We will also keep track of level of current node while traversing.

Algorithm to find level of a given node in binary tree
• Traverse given binary tree using pre order traversal by keeping track of levels of nodes.
• Let node be the pointer to any node at level L.
• If node is equal to NULL, return.
• If node is equal to N, then print the level of node(L) on screen else continue traversal of sub trees at level L+1.
Time Complexity : O(n), we are traversing binary tree only once.

## C program to print level of a given node of binary tree

``` #include <stdio.h>

struct node {
int data;
struct node *left;
struct node *right;
};

struct node* getNewNode(int data) {
/* dynamically allocate memory for a new node */
struct node* newNode = (struct node*)malloc(sizeof(struct node));

/* populate data in new Node */
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;

return newNode;
}

/*
This function returns below tree
1
/ \
2    3
/ \  / \
4  5 6  7
/ \       \
8  9       10
*/
struct node* generateBTree(){
// Root Node
struct node* root =  getNewNode(1);

root->left = getNewNode(2);
root->right = getNewNode(3);

root->left->left = getNewNode(4);
root->left->right = getNewNode(5);
root->right->left = getNewNode(6);
root->right->right = getNewNode(7);

root->left->left->left = getNewNode(8);
root->left->left->right = getNewNode(9);

root->right->right->right = getNewNode(10);

return root;
}

/*
Prints level of all nodes. It does pre Order
traversal and keeps track of the current level and prints it.
*/
void printLevelOfNode(struct node* root, int currentLevel, int num) {

if(root == NULL) {
return;
}

if(root->data == num) {
printf("Level of %d is %d \n", num, currentLevel);
}

printLevelOfNode(root->left, currentLevel+1, num);
printLevelOfNode(root->right, currentLevel+1, num);
}

int main() {
struct node *root = generateBTree();

/*Printing level of nodes */
printLevelOfNode(root, 0, 1);
printLevelOfNode(root, 0, 5);
printLevelOfNode(root, 0, 7);
printLevelOfNode(root, 0, 9);

getchar();
return 0;
}
```
Output
```Level of 1 is 0
Level of 5 is 2
Level of 7 is 2
Level of 9 is 3
```