Mon programme d'arbre se bloque après l'insertion dans un nœud racine

voix
0

Je ne suis pas trop bon à faire des arbres et je visse totalement récursivité. Cependant, je tentais de faire un programme pour insérer et afficher les données dans l'arborescence.

Le problème est qu'il se bloque après l' insertion dans le nœud racine et je ne sais pas pourquoi. L'arbre est pas trop grand. Juste 10 int.

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10;
/* run this program using the console pauser or add your own getch, system(pause) or input loop */
struct node{
    int data;
    struct node * left;
    struct node * right;
};


void insert(struct node * root,int num){
    printf(Insert called for num:%d\n,num);
    if(root == NULL){
        root = (struct node *)malloc(sizeof(struct node));
        root->data = num;
    }else if(num > root->data){ // Number greater than root ?
        insert(root->right,num); // Let the right sub-tree deal with it
    }else if(num < root->data){// Number less than root ?
        insert(root->left,num);// Let the left sub-tree deal with it.
    }else{
        // nothing, just return.
    }
}


void display(struct node * root){ // Inorder traversal
    if(root->left!=NULL){ // We still have children  in left sub-tree ?
        display(root->left); // Display them.
    }

    printf(%d,root->data); // Display the root data

    if(root->right!=NULL){ // We still have children in right sub-tree ?
        display(root->right); // Display them.
    }

}

int main(int argc, char *argv[]) {
    int a[10] = {2,1,3,5,4,6,7,9,8,10};
    int i;
    struct node * tree;

    for(i = 0; i < 10;i++){
        insert(tree,a[i]);
    }
    printf(Insert done);
    return 0;
}  

Quelqu'un peut-il s'il vous plaît me dire où je suis allé mal?

Je sais qu'il est mal vu de demander aux gens de vérifier votre code sur la pile , mais parfois paire de programmation des œuvres: p

Mise à jour:
Après la mise struct node * tree = NULL;, la insert()méthode fonctionne bien. Le display()programme provoque le plantage.

Créé 02/10/2013 à 05:54
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

dans ton

int main(int argc, char *argv[]) {
    // ...
    struct node * tree;
    // what is the value of tree at this line?
    for(i = 0; i < 10;i++){
        insert(tree,a[i]);
    }
    // ...
} 

qu'est-ce que le point « arbre » à la ligne marquée?

Créé 02/10/2013 à 05:57
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more