Form

 #include <stdio.h>

#include <stdlib.h>


#define MAX 100


int tree[MAX];


// Function prototypes

void insertNode(int data);

void preorderTraversal(int index);

void inorderTraversal(int index);

void postorderTraversal(int index);

void menu();


int main() {

    int choice, data;


    // Initialize the tree array with -1 indicating empty nodes

    for (int i = 0; i < MAX; i++) {

        tree[i] = -1;

    }


    while (1) {

        menu();

        printf("Enter your choice: ");

        scanf("%d", &choice);

        switch (choice) {

            case 1:

                printf("Enter the data to insert: ");

                scanf("%d", &data);

                insertNode(data);

                break;

            case 2:

                printf("Preorder traversal: ");

                preorderTraversal(0);

                printf("\n");

                break;

            case 3:

                printf("Inorder traversal: ");

                inorderTraversal(0);

                printf("\n");

                break;

            case 4:

                printf("Postorder traversal: ");

                postorderTraversal(0);

                printf("\n");

                break;

            case 5:

                exit(0);

            default:

                printf("Invalid choice! Please try again.\n");

        }

    }

    return 0;

}


// Function to insert a node in the binary tree

void insertNode(int data) {

    int i = 0;

    while (i < MAX) {

        if (tree[i] == -1) {

            tree[i] = data;

            break;

        } else if (data < tree[i]) {

            i = 2 * i + 1; // Move to the left child

        } else {

            i = 2 * i + 2; // Move to the right child

        }

    }

    if (i >= MAX) {

        printf("Tree is full, cannot insert more nodes.\n");

    }

}


// Function for preorder traversal

void preorderTraversal(int index) {

    if (index < MAX && tree[index] != -1) {

        printf("%d ", tree[index]);

        preorderTraversal(2 * index + 1);

        preorderTraversal(2 * index + 2);

    }

}


// Function for inorder traversal

void inorderTraversal(int index) {

    if (index < MAX && tree[index] != -1) {

        inorderTraversal(2 * index + 1);

        printf("%d ", tree[index]);

        inorderTraversal(2 * index + 2);

    }

}


// Function for postorder traversal

void postorderTraversal(int index) {

    if (index < MAX && tree[index] != -1) {

        postorderTraversal(2 * index + 1);

        postorderTraversal(2 * index + 2);

        printf("%d ", tree[index]);

    }

}


// Function to display the menu

void menu() {

    printf("\nMenu:\n");

    printf("1. Insert Node\n");

    printf("2. Preorder Traversal\n");

    printf("3. Inorder Traversal\n");

    printf("4. Postorder Traversal\n");

    printf("5. Exit\n");

}


Comments