Mein Baum Programm abstürzt, nachdem sie in einem Stammknoten Einfügen

stimmen
0

Ich bin nicht allzu gut auf Bäume zu machen und ich völlig vermasseln Rekursion. Allerdings habe ich versucht, ein Programm zu machen, einzusetzen und Daten in den Baum angezeigt werden soll.

Das Problem ist , dass es nach dem Einsetzen in den Wurzelknoten abstürzt und ich weiß nicht , warum. Der Baum ist nicht zu groß. Nur 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;
}  

Kann mir bitte jemand sagen, wo ich schief gelaufen?

Ich weiß , es ist verpönt Menschen fragen Sie Ihren Code auf dem Stack zu überprüfen , aber manchmal Paarprogrammierung funktioniert: p

Aktualisieren:
Nach der Einstellung struct node * tree = NULL;der insert()Methode gut funktioniert. Die display()Ursachen Programm zum Absturz bringen.

Veröffentlicht am 02/10/2013 um 05:54
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

in deinem

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]);
    }
    // ...
} 

Was bedeutet „Baum“ Punkt auf der Linie markiert?

Beantwortet am 02/10/2013 um 05:57
quelle vom benutzer

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