Binary Search Tree Implementation in C

Binary Search Tree (BST) Implementation in C

This document provides a complete C implementation of a Binary Search Tree (BST), including essential operations such as insertion, searching, traversal, and tree analysis.

Core Data Structure

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct node {
    int data;
    struct node *left, *right;
};

Key Operations

  • Insertion: Adds a new node while maintaining BST properties.
  • Search: Efficiently locates a value within the tree.
  • Traversals: Includes Inorder, Preorder, and Postorder methods.
  • Analysis: Functions to find min/max values, count nodes, and calculate height.
  • Utilities: Tools to copy, compare, and check if the tree is balanced.

Implementation Code

struct node* createNode(int value) {
    struct node* newNode = (struct node*)malloc(sizeof(struct node));
    newNode->data = value;
    newNode->left = newNode->right = NULL;
    return newNode;
}

struct node* insert(struct node* root, int value) {
    if (root == NULL) return createNode(value);
    if (value < root->data) root->left = insert(root->left, value);
    else if (value > root->data) root->right = insert(root->right, value);
    return root;
}

// ... (Additional functions for search, traversal, and analysis follow the same logic)

Interactive Menu

The main() function provides a command-line interface to interact with the BST, allowing users to perform operations dynamically by selecting from a menu of 14 options.