Programming Geek
Rated 4.1/5 based on 446 reviews

Binary Tree Using Array

An array can be converted into a binary tree.

      1) Parent : Parent of a node at index lies at (n-1)/2 except the root node.
   
      2) Left Child : Left child of a node at index n lies at (2*n+1).
   
      3) Right Child : Right child of a node at index n lies at (2*n+2).
   
     4) Left Sibling : left Sibling of a node at index n lies at (n-1).
   
     5) Right Sibling : Right sibling of a node at index n lies at (n+1).

C program for converting a list of array into a binary tree.

 
//Binary tree Using array
/**
*
*@author VIKASH VIK VIKKU VIKASHVVERMA
* 
*/

#include<stdio.h>

typedef struct node
{
 struct node*left;
 struct node*right;
 char data;
}node;

node* insert(char c[],int n)
{ node*tree=NULL;
 if(c[n]!='\0')
 {
  tree=(node*)malloc(sizeof(node));
  tree->left=insert(c,2*n+1);
  tree->data=c[n];
  tree->right=insert(c,2*n+2);
 }
 return tree;
}
//traverse the tree in inorder
void inorder(node*tree)
{
 if(tree!=NULL)
 {
  inorder(tree->left);
  printf("%c\t",tree->data);
  inorder(tree->right);
 }
}

void main()
{
 node*tree=NULL;
 char c[]={'A','B','C','D','E','F','\0','G','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
 tree=insert(c,0);
 inorder(tree);
}