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.













