Mijn boom programma crasht na het invoegen in een root node

stemmen
0

Ik ben niet zo goed in het maken van bomen en ik ben het volledig verpesten recursie. Echter, heb ik geprobeerd om een ​​programma in te voegen en gegevens weer te geven in de boom te maken.

Het probleem is dat het crasht na het invoegen in het hoofdknooppunt en ik weet niet waarom. De boom is niet al te groot. Slechts 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;
}  

Kan iemand mij vertellen waar ik ging er mis?

Ik weet dat het is afgekeurd om mensen te vragen om uw code op stapel te beoordelen, maar soms pair programming werken: p

Update:
Na het instellen van struct node * tree = NULL;de insert()methode werkt goed. De display()oorzaken programma vastloopt.

De vraag is gesteld op 02/10/2013 om 05:54
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

in uw

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

wat betekent "boom" wijs op de regel gemarkeerd?

antwoordde op 02/10/2013 om 05:57
bron van user

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