Question:Given the root pointer to a binary tree, find its size.

Input:Sample Tree (Pointer to node 1 is given). Find the size

Output:Size = 7

We discussed how to find the size of a binary tree using the recursive method in this post:-

This technique involved recursion and the understanding can be a bit complicated. If you prefer to go through the iterative way, we can simple do a level order traversal on the tree. At the time of printing the node, if we increment a counter variable, that will give us the number of total nodes in the end. So with a simple modification, we can write the code as:-

#include<stdio.h> struct binaryTreeNode{ int data; struct binaryTreeNode * left; struct binaryTreeNode * right; }; // Iterative method to find the size of a binary tree // FInding the number of nodes int sizeOfBinaryTree(struct binaryTreeNode * root) { // Counter variable to store the number of nodes int count = 0; // Level order traversal struct binaryTreeNode * temp = NULL; struct queue * Q = NULL; if(root == NULL) return 0; Q = enQueue(Q, root); while(!isQueueEmpty(Q)) { temp = Q -> front -> data; Q = deQueue(Q); // We increment the counter here count++; if(temp -> left) Q = enQueue(Q, temp -> left); if(temp -> right) Q = enQueue(Q, temp -> right); } free(Q); return count; }

*Time Complexity:-* O(n)

*Space Complexity:-* O(n)

**Ideone link for running code:-** http://ideone.com/UgS9nO