# Construct a complete binary tree from given array in level order fashion in C++

Suppose we have an array A[], with n elements. We have to construct the binary tree from the array in level order traversal. So the elements from the left in the array will be filled in the tree level-wise starting from level 0. So if the array is like A = [1, 2, 3, 4, 5, 6], then the tree will be like below: If we see closer, we can find that when the parent is present at index i, then its two children will be at index (2i + 1), and (2i + 2). Thus we can insert left and right nodes using its parent nodes. The first element of the array will be the root of the tree.

## Example

Live Demo

#include <iostream>
using namespace std;
class Node {
public:
int data;
Node* left, * right;
};
Node* getNode(int data) {
Node* node = new Node;
node->data = data;
node->left = node->right = NULL;
return node;
}
Node* insertLevelWise(int arr[], Node* root, int i, int n) {
if (i < n) {
Node* temp = getNode(arr[i]);
root = temp;
root->left = insertLevelWise(arr, root->left, 2 * i + 1, n);
root->right = insertLevelWise(arr, root->right, 2 * i + 2, n);
}
return root;
}
void inorderTrav(Node* root) {
if (root != NULL){
inorderTrav(root->left);
cout << root->data <<" ";
inorderTrav(root->right);
}
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6};
int n = sizeof(arr)/sizeof(arr);
Node* root = insertLevelWise(arr, root, 0, n);
cout << "Inorder traversal of created tree: ";
inorderTrav(root);
}

## Output

Inorder traversal of created tree: 4 2 5 1 6 3