Я пытаюсь сделать BST из заданного массива, а затем пересечь его в порядке. Ошибок компиляции нет, но во время выполнения ошибка равна Ошибка сегментации (сбрасывается ядром). Я не смог выяснить причину ошибки (попытался просмотреть stackoverflow для подобных случаев). Код выглядит следующим образом:Ошибка: ошибка сегментации (сбрасывается сердечник) || Вставка элемента в BST || C
#include<stdio.h>
#include<stdlib.h>
struct TreeNode{
int data;
struct TreeNode *right;
struct TreeNode *left;
};
struct TreeNode *newTreeNode(){
struct TreeNode *node = malloc(sizeof(struct TreeNode));
if(node){
node->data = 0;
node->left = NULL;
node->right = NULL;
return node;
}
else{
printf("Memory Error");
}
};
void InorderTraversalRecursive(struct TreeNode *node){
InorderTraversalRecursive(node->left);
printf("%d",node->data);
InorderTraversalRecursive(node->right);
}
struct TreeNode *InsertIntoTree(struct TreeNode *node, int data){
if(node == NULL){
node = newTreeNode();
node->data = data;
node->left = node->right = NULL;
}
else{
if(data > node->data)
InsertIntoTree(node->right, data);
else if(data < node->data)
InsertIntoTree(node->left, data);
}
return node;
}
struct TreeNode *MakeTreeFromData(int *arr){
int size = sizeof(arr)/sizeof(arr[0]);
struct TreeNode *root;
root = newTreeNode();
int i;
for(i=0;i<size;i++){
InsertIntoTree(root,arr[i]);
}
return root;
}
void main(){
int data[] = {4,2,6,1,7,3,5,8};
struct TreeNode *root;
root = MakeTreeFromData(data);
InorderTraversalRecursive(root);
}
Вы не должны смотреть на SO для этого, но использовать отладчик. –
Цель sizeof() - не считать размер массива. Попробуйте: 'int size = 8' в вашем примере. – nsvir