Program to create Simple Binary Tree with recursive traversal

/*
    Simple Binary Tree with recursive traversal
    Created By : Pirate
*/

/*Create the simple binary tree and recursive traversal*/
#include<stdio.h>
#include<conio.h>
#include<malloc.h>

typedef struct tree{
    int data;
    struct tree *left;
    struct tree *right;
}node;

void insert (node *, node*);
void inorder (node *);
void preorder (node *);
void postorder (node *);
node *get_node();

int main(){
    int choice;
    char ans = 'n';
    node *newNode,*root;
    root = NULL;
    do{
        printf("*** Simple Binary Tree ***\n");
        printf("\n1.Create\n");
        printf("2.Inorder\n");
        printf("3.Preorder\n");
        printf("4.Postorder\n");
        printf("5.Exit\n");
        printf("Enter Your choice: ");
        scanf("%d",&choice);
        switch(choice){
            case 1:
                root = NULL;
                do{
                    newNode=get_node();
                    printf("Enter the Element\n");
                    scanf("%d",& newNode->data);
                    if(root == NULL)
                        root= newNode;
                    else
                        insert(root, newNode);
                    printf("\nDo you want to enter more elements?(Y/N)\n");
                    ans = getch();
                }while(ans== 'Y'|| ans=='y');
                break;
            case 2:
                if(root == NULL)
                    printf("Tree is not created!");
                else
                    inorder(root);
                break;
            case 3:
                if(root ==NULL)
                    printf("Tree is not created!");
                preorder (root);
                break;
            case 4:
                if(root == NULL)
                    printf("Tree is not created!");
                postorder(root);
                break;
        }
    }while(choice!=5);
    return 0;
}
node *get_node(){
    node *temp;
    temp = (node *) malloc(sizeof(node));
    temp->left = NULL;
    temp->right = NULL;
    return temp;
}
void insert(node *root, node *newNode){
    char ch;
    printf("Where to insert left (L)/right (R) of %d:\n", root->data);
    ch=getche();
    if((ch=='R') || (ch=='r')){
        if(root->right == NULL){
            root->right=newNode;
        }
        else
            insert(root->right,newNode);
        }
    else{
        if(root->left== NULL){
            root->left=newNode;
        }
        else
            insert(root->left,newNode);
    }
}
void inorder(node *temp){
    if(temp!= NULL){
        inorder(temp->left);
        printf("%d\n", temp->data);
        inorder(temp ->right);
    }
}
void preorder(node *temp){
    if(temp != NULL){
        printf("%d\n",temp->data);
        preorder(temp->left);
        preorder(temp->right);
    }
}
void postorder(node *temp){
    if(temp!= NULL){
        postorder(temp-> left);
        postorder(temp->right);
        printf("%d\n",temp->data);
    }
}

Output :

Enjoy :)

0 comments:

Post a Comment

 

Pro

About