Construct a function that will display a binary tree by leve
Construct a function that will display a binary tree by levels (each level on a separate line). If there is no node at a position in a level, then the function should display NULL. Only levels that contain at least 1 datum should be displayed in c++
Solution
// C++ code level order traversal
 #include <stdio.h>
 #include <stdlib.h>
 #include <iostream>
 #include <string.h>
 #include <iomanip>   
 using namespace std;
 // binary tree nodee
 struct node
 {
 int element;
 struct node* l, *r;
 };
// determien height of tree
 int treeHeight(struct node* rootNode)
 {
 if (rootNode==NULL)
 return 0;
 else
 {
 /* compute the height of each subtree */
 int lheight = treeHeight(rootNode->l);
 int rheight = treeHeight(rootNode->r);
/* use the larger one */
 if (lheight > rheight)
 return(lheight+1);
 else return(rheight+1);
 }
 }
// create node
 struct node* createNewNode(int element)
 {
 struct node* newNode = (struct node*)malloc(sizeof(struct node));
 newNode->element = element;
 newNode->l = NULL;
 newNode->r = NULL;
return newNode;
 }
// print level
 void printTreeLevel(struct node* rootNode, int treeLevel)
 {
 if (rootNode == NULL)
 return;
 if (treeLevel == 1)
 printf(\"%d \", rootNode->element);
 else if (treeLevel > 1)
 {
 printTreeLevel(rootNode->l, treeLevel-1);
 printTreeLevel(rootNode->r, treeLevel-1);
 }
 }
 // print traversal wise
 void iterateTreeLevel(struct node* rootNode)
 {
 int ht = treeHeight(rootNode);
 for (int currentHeight=1; currentHeight<=ht; currentHeight++)
 {
 printf(\"Level:%d => \", currentHeight);
 printTreeLevel(rootNode, currentHeight);
 printf(\"\ \");
 }
 }
 // driver code
 int main()
 {
 struct node *rootNode = createNewNode(1);
 rootNode->l = createNewNode(12);
 rootNode->r = createNewNode(22);
 rootNode->l->l = createNewNode(54);
 rootNode->l->r = createNewNode(5);
 rootNode->l->r->l = createNewNode(10);
printf(\"Level Order traversal: \ \");
 iterateTreeLevel(rootNode);
return 0;
 }
/*
 output:
Level Order traversal:
 Level:1 => 1
 Level:2 => 12 22
 Level:3 => 54 5
 Level:4 => 10
*/


