C++ program to find the averages of levels of binary tree.

C++ program to find the averages of levels of binary tree.

//Enter Your Code Here...

/*input of this binary tree program is:
        /   \ 
      2     9 
    / \       \ 
  3    5      7   
 We need to find the average of each levels.  */

#include <bits/stdc++.h> 
using namespace std;
struct Node
//here a binary tree has nodes with data, we are pointing left child and right child//
int value;
struct Node *left, *right;
// Here, by this function we can find the averages of each level in atree//
void average_levels(Node *root)
queue<Node*>q;      /* here we are creating a queue named as 'q'. In q are going to establish the root node*/
while(!q.empty())   // creating a loop when the queue is not empty. W can say this loop as 1st loop .
int sum=0, cnt=0;       /* initialising two variable sum and cnt which wiil find the avarages*/
queue<Node*>temp;       /*here we are creating a temporary queue 'temp' for storing the node's data in a temporery manner. 
                         this will help to store the values of a node temourarily while q in function. */
while(!q.empty())    // Here we are creating a 2nd loop. 
Node *n=q.front();  /*here the value front end of q will be decleared as 'n' */
q.pop();            /* then  we pop the value from q and the value will be stored in variable 'sum' */
cnt++;              // 'cnt' increases as the values are stored in the 'sum' 
    cout<<(sum * 1.0 / cnt)<<endl;           // the stored value of the temporary queue will be pushed to q when q will empty.
                                             // this is for printing the average values of each levels
/* using this function we can allocate the new node with initized data and 
null left and right pointer*/
Node *newNode(int data) 
Node *temp = new Node; 
temp->value = data; 
temp->left = temp->right = NULL; 
return temp; 
int main()
Node* root = NULL;       /*here we are putting the values in each and every nodes of a binary tree. This tree has 3 levels.*/
root = newNode(5); 
root->left = newNode(4); 
root->right = newNode(10); 
root->left->left = newNode(2); 
root->left->right = newNode(7); 
root->right->right = newNode(9); 
return 0; 

/* out put of this program is:

More Articles of Arkaprava Mukhopadhyay:

Name Views Likes
C++ program to find the averages of levels of binary tree. 173 0