Я не слишком хорошо делать деревья, и я полностью ввернуть рекурсию. Тем не менее, я попытался сделать программу для вставки и отображения данных в дерево.
Проблема заключается в том, что он выходит из строя после того, как вставить в корневой узел , и я не знаю , почему. Дерево не слишком большое. Только 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;
}
Может кто-то пожалуйста, скажите мне, где я пошло не так?
Я знаю , что это не одобряется просить людей проверить ваш код на стеке , но иногда парное программирование работы: р
Обновление:
После установки struct node * tree = NULL;, то insert()метод работает хорошо. display()Программа причины аварии.













