Sunday, 21 April 2019

Binary Tree using link list in c programming.


#include<stdio.h>

typedef struct Btree{
    int data;
    struct Btree *left;
    struct Btree *right;
};

struct Btree insert(struct Btree *bt,int n){
    if(bt==NULL){
        bt= (struct Btree *) malloc(sizeof(struct Btree));
        bt->data=n;
        bt->left=NULL;
        bt->right=NULL;
    }
    else if(n<= bt->data)
        bt->left = insert(bt->left,n);
    else
        bt->right = insert(bt->right,n);
    return bt;
}

void preorderTravasal(struct Btree *bt){
    if(bt){
        printf("%d,",bt->data);
        preorderTravasal(bt->left);
        preorderTravasal(bt->right);
    }
    return;
}

void inorderTravasal(struct Btree *bt){
    if(bt){
        inorderTravasal(bt->left);
        printf("%d,",bt->data);
        inorderTravasal(bt->right);
    }
    return;
}

void postorderTravasal(struct Btree *bt){
    if(bt){
        postorderTravasal(bt->left);
        postorderTravasal(bt->right);
        printf("%d,",bt->data);
    }
    return;
}

int main(){
    struct Btree *bt;
    bt=NULL;
    int item;

    while(1){
        printf("which operation you want to perform....\n");
        printf("1. Insert an element.\n");
        printf("2. preOrder Traversal\n");
        printf("3. InOrder Traversal\n");
        printf("4. postOrder Traversal\n");

        int op;

        scanf("%d",&op);
        switch(op){
        case 1:
            printf("Enter a number.\n");
            scanf("%d",&item);
            bt = insert(bt,item);
            break;
        case 2:
            preorderTravasal(bt);
            break;
        case 3:
            inorderTravasal(bt);
            break;
        case 4:
            postorderTravasal(bt);
            break;
        default:
            printf("Please choose correct option...\n\n");
        }
    }
}

No comments:

Post a Comment

Popular Posts