Hoşgeldin Misafir

C binary tree 2

MiRaT

13 Kas 2017
2,077 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Kod:
#include<stdlib.h>
#include<stdio.h>

//binary tree

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

**** insert(node ** tree, int val){ //////////////////İNSERT//////////////////////----------------------------------
    node *temp = NULL;
    if(!(*tree)){
        temp = (node *)malloc(sizeof(node));
        temp->left = temp->right = NULL;
        temp->data = val;
        *tree = temp;
        return;
    }

    if(val < (*tree)->data){
        insert(&(*tree)->left, val);
    }
    else if(val > (*tree)->data){
        insert(&(*tree)->right, val);
    }
}

**** print_preorder(node * tree){ ////////////////////PRE ORDER////////////
    if (tree){
        printf("%d\n",tree->data);
        print_preorder(tree->left);
        print_preorder(tree->right);
    }
}

**** print_inorder(node * tree){ /////////////////////IN ORDER//////////////
    if (tree){
        print_inorder(tree->left);
        printf("%d\n",tree->data);
        print_inorder(tree->right);
    }
}

**** print_postorder(node * tree){ ///////////////////POST ORDER/////////////
    if (tree){
        print_postorder(tree->left);
        print_postorder(tree->right);
        printf("%d\n",tree->data);
    }
}

**** deltree(node * tree){ ////////////////////////////DELETE TREE//////////
    if (tree){
        deltree(tree->left);
        deltree(tree->right);
        free(tree);
    }
}

int main(){ /////////////////////////////////////////////MAİN////////////////////////////////_________________________________________________________________________________
	int num;
	int c;
    node *root;
    node *tmp;
    //int i;

    root = NULL;
    /* Inserting nodes into tree */
a:
   
	printf("Type a number to put in binary tree (type -1 to end) : ");
	scanf("%d",&num); //numaraları yaz
	if(num!=-1){
    insert(&root, num);
    goto a;
    }

//    insert(&root, 9);
//    insert(&root, 4);
//    insert(&root, 15);
//    insert(&root, 6);
//    insert(&root, 12);
//    insert(&root, 17);
//    insert(&root, 2);

    /* Printing nodes of tree */
    printf("Select a traversal display type : \n1-Preorder \n2-In order \n3-Post order");
    scanf("%d",&c);
    
switch (c){ //sıralama türünü seç
  case 1:
    printf("Pre Order Display\n");
    print_preorder(root);
    break;
  case 2:
    printf("In Order Display\n");
    print_inorder(root);
    break;
  case 3:
    printf("Post Order Display\n");
    print_postorder(root);
    break;
}

    deltree(root); //ağaçtaki tüm düğümleri sil
    return 0; 
	}