Best C programming code for several functions used in Binary Tree (December,2020)

Best C programming code for several functions used in Binary Tree (December,2020)

In this blog, we have tried to implement all the basic functions of Binary tree in simple way. Moreover, I have also designed the code in such a manner that anyone having basic knowledge of pointer and linked list can understand it. This is the best C programming code for implementing Binary tree and its basic functions. We have used stack for keeping track of the several nodes in the Binary Tree. In recent future we are planning to prepare a video to describe the code. We will love to hear from you all. For further detail you can email me @ creativeresource2020@gmail.com.

 

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

typedef struct tree
{
int val;
struct tree *lch;
struct tree *rch;
}tr;

typedef struct stack
{
tr *node;
struct stack *next;
}st;


void push(st **,tr *);
tr *pop(st **);
int isempty(st *);
tr *createroot();
void insert(st *);
void inorder(tr *);
void main()
{
st *h=NULL;
tr *ptr;
clrscr();
ptr=createroot();
push(&h,ptr);
insert(h);
printf("\n\nInorder traversal form of the tree is : ");
inorder(ptr);
getch();
}



tr *createroot()
{
int v;
tr *ptr;
printf("\nEnter the values : ");
scanf("%d",&v);
ptr=(tr *)malloc(sizeof(tr));
ptr->val=v;
ptr->lch=ptr->rch=NULL;
return(ptr);
}

void insert(st *h)
{
tr *ptr,*temp;
char ch;
int v;
while(!isempty(h))
{
ptr=pop(&h);
printf("\n%d has left child?(y/n) : ",ptr->val);
fflush(stdin);
scanf("%c",&ch);
if(ch=='y' || ch=='Y')
{
printf("\nEnter the value : ");
fflush(stdin);
scanf("%d",&v);
temp=(tr *)malloc(sizeof(tr));
temp->val=v;
temp->lch=temp->rch=NULL;
ptr->lch=temp;
push(&h,temp);
}
printf("\n%d has right child?(y/n) : ",ptr->val);
fflush(stdin);
scanf("%c",&ch);
if(ch=='y' || ch=='Y')
{
fflush(stdin);
printf("\nEnter the value : ");
scanf("%d",&v);
temp=(tr *)malloc(sizeof(tr));
temp->val=v;
temp->lch=temp->rch=NULL;
ptr->rch=temp;
push(&h,temp);
}
}
}

void push(st **h,tr *ptr)
{
st *temp;
temp=(st *)malloc(sizeof(st));
temp->node=ptr;
temp->next=*h;
*h=temp;
}

tr *pop(st **h)
{
tr *ptr;
ptr=(*h)->node;
*h=(*h)->next;
return ptr;
}

int isempty(st *h)
{
if(h==NULL)
return 1;
else
return 0;
}



void inorder(tr *h)
{
if(h!=NULL)
{
inorder(h->lch);
printf("%d,",h->val);
inorder(h->rch);
}
}