C Program to Find the Largest value in a Tree using Inorder Traversal
Posted by Superadmin on December 10 2015 05:35:51
Here is source code of the C Program to Find the Largest value in a Tree using Inorder Traversal. The C program is successfully compiled and run on a Linux system. The program output is also shown below.
/*
* C Program to Find the Largest value in a Tree using
* Inorder Traversal
* 40
* /\
* 20 60
* /\ \
* 10 30 80
* \
* 90
*/
#include <stdio.h>
#include <stdlib.h>
struct btnode
{
int value;
struct btnode *left, *right;
};
typedef struct btnode node;
/* function prototypes */
void insert(node *, node *);
void inorder(node *);
void largest(node *);
void main()
{
node *root = NULL, *new = NULL ;
int num = 1;
printf("Enter the elements of the tree(enter 0 to exit)\n");
while (1)
{
scanf("%d", &num);
if (num == 0)
break;
new = malloc(sizeof(node));
new->left = new->right = NULL;
new->value = num;
if (root == NULL)
root = new;
else
{
insert(new, root);
}
}
printf("elements in a tree in inorder are\n");
inorder(root);
largest(root);
}
/* displaying nodes of a tree using inorder */
void inorder(node *root)
{
if (root != NULL)
{
inorder(root->left);
printf("%d -> ", root->value);
inorder(root->right);
}
}
/* inserting nodes into the tree */
void insert(node * new , node *root)
{
if (new->value > root->value)
{
if (root->right == NULL)
root->right = new;
else
insert (new, root->right);
}
if (new->value < root->value)
{
if (root->left == NULL)
root->left = new;
else
insert(new, root->left);
}
}
/* finding largest node in a tree */
void largest(node *root)
{
if (root->right == NULL)
{
printf("largest element is %d", root->value);
}
while (root != NULL && root->right != NULL)
{
root = root->right;
}
printf("\nlargest value is %d\n", root->value);
}
$ cc tree4.c
$ a.out
Enter the elements of the tree(enter 0 to exit)
40
20
60
10
30
80
90
0
elements in a tree in inorder are
10 -> 20 -> 30 -> 40 -> 60 -> 80 -> 90
largest value is 90