This C Program implements binary tree using linked list. Binary Search tree is a binary tree in which each internal node x stores an element such that the element stored in the left subtree of x are less than or equal to x and elements stored in the right subtree of x are greater than or equal to x. This is called binary-search-tree property
Here is source code of the C Program to implement binary tree using linked list. The C program is successfully compiled and run on a Linux system. The program output is also shown below.
Program
#include <stdio.h>
#include <malloc.h>
struct node {
struct node * left;
char data;
struct node * right;
}
;
struct node *constructTree( int );
void inorder(struct node *);
char array[ ] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', '', '', 'H'
}
;
int leftcount[ ] = {
1, 3, 5, -1, 9, -1, -1, -1, -1, -1
}
;
int rightcount[ ] = {
2, 4, 6, -1, -1, -1, -1, -1, -1, -1
}
;
void main() {
struct node *root;
root = constructTree( 0 );
printf("In-order Traversal: \n");
inorder(root);
}
struct node * constructTree( int index ) {
struct node *temp = NULL;
if (index != -1) {
temp = (struct node *)malloc( sizeof ( struct node ) );
temp->left = constructTree( leftcount[index] );
temp->data = array[index];
temp->right = constructTree( rightcount[index] );
}
return temp;
}
void inorder( struct node *root ) {
if (root != NULL) {
inorder(root->left);
printf("%c\t", root->data);
inorder(root->right);
}
}
Output
In-order Traversal: D B H E A F C G