C program to count number of leaf nodes in a Tree
Problem Description
This C Program counts the number of leaf nodes in a Tree.
C program to count number of leaf nodes in a Tree - Source code
/*
C Program to Count Number of Leaf Nodes in a Tree
*/
#include <stdio.h>
#include <stdlib.h>
struct bt_node {
int value;
struct bt_node * l;
struct bt_node * r;
};
typedef struct bt_node bt;
bt *root;
bt *new, *list;
int count = 0;
bt * create_node();
void display(bt *);
void construct_tree();
void count_leaf(bt *);
void main()
{
construct_tree();
display(root);
count_leaf(root);
printf("\n leaf nodes are : %d",count);
}
/* To create a empty node */
bt * create_node()
{
new = (bt *)malloc(sizeof(bt));
new->l = NULL;
new->r = NULL;
}
/* To construct a tree */
void construct_tree()
{
root = create_node();
root->value = 100;
root->l = create_node();
root->l->value = 50;
root->r = create_node();
root->r->value = 55;
root->l->l = create_node();
root->l->l->value = 70;
root->l->r = create_node();
root->l->r->value = 80;
root->l->r->r = create_node();
root->l->r->r->value = 60;
root->l->l->l = create_node();
root->l->l->l->value = 10;
root->l->l->r = create_node();
root->l->l->r->value = 40;
}
/* To display the elements in a tree using inorder traversal */
void display(bt * list)
{
if (list == NULL)
{
return;
}
display(list->l);
printf("->%d", list->value);
display(list->r);
}
/* To count the number of leaf nodes */
void count_leaf(bt * list)
{
if (list == NULL)
{
return;
}
if (list->l == NULL && list->r == NULL)
{
count++;
}
count_leaf(list->l);
count_leaf(list->r);
}
Program Output
->10->70->40->50->80->60->100->55
leaf nodes are : 4