Binary tree in C: solved exercise
If you searched for binary tree in C solved exercise, this page gives you a basic BST with insert and search.
Problem statement
Implement a binary search tree with:
- value insertion,
- value lookup,
- output showing if value exists.
C solution
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int v;
struct Node *left, *right;
} Node;
Node *insert(Node *r, int v) {
if (!r) {
Node *n = malloc(sizeof(Node));
if (!n) return NULL;
n->v = v; n->left = n->right = NULL;
return n;
}
if (v < r->v) r->left = insert(r->left, v);
else if (v > r->v) r->right = insert(r->right, v);
return r;
}
int search(Node *r, int v) {
if (!r) return 0;
if (r->v == v) return 1;
if (v < r->v) return search(r->left, v);
return search(r->right, v);
}
void free_tree(Node *r) {
if (!r) return;
free_tree(r->left);
free_tree(r->right);
free(r);
}
int main(void) {
Node *r = NULL;
r = insert(r, 20);
r = insert(r, 10);
r = insert(r, 30);
printf("Has 10: %d\n", search(r, 10));
printf("Has 40: %d\n", search(r, 40));
free_tree(r);
return 0;
}Expected output
Has 10: 1
Has 40: 0Common mistakes
- Not defining duplicate-value behavior.
- Breaking BST ordering property.
- Skipping final memory cleanup.
Practical use
Trees are still used for in-memory indexes, hierarchy models, and search features.
Recommended next exercise
- Circular linked list in C: solved insert and traversal exercise
- Doubly linked list in C: solved exercise with insert and traversal
- fread and fwrite in C: solved binary file exercise
- All C exercises
Guided practice and full book
If you want a complete path with progressive difficulty:
FAQ
Is this exercise useful for C exams and technical interviews?
Yes. It targets patterns that commonly appear in practice assignments, technical interviews, and C programming exams.
Where can I keep practicing with more solved C exercises?
In Programming in C in 100 Solved Exercises and C Exercises. Kindle Unlimited: View on Amazon.
How should I practice this exercise type to improve faster?
Start with small inputs, run edge cases (empty, one item, max capacity), then rewrite the solution from scratch without copying.