我想解決二叉樹的問題,但是我在構建樹時出錯了,也許。似乎連接到我,爲什麼我有段錯誤,當我嘗試打印出節點的數據:二叉樹頂視圖分割故障
// 3
// / \
// 5 2
///\ /\
// 1 4 6 7
// \ /
// 9 8
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node* left;
struct node* right;
};
void top_view(struct node * root) {
int array[100] = {0};
int count = 0;
struct node * temp;
if (root) {
if (root->left) {
temp = root;
while (temp->left) {
printf("%d ", temp->left->data);
// array[count] = temp->left->data;
count++;
temp = temp->left;
}
}
array[count] = root->data;
printf("%d\n", array[count]);
if (root->right != NULL) {
printf("right %d\n", root->right->data);
temp = root;
printf("%p\n", temp->right->right);
printf("%d\n", temp->right->right->data);
}
// for (int i = 0; i < 100; i++) {
// printf("%d ", array[i]);
// }
} else {
return ;
}
}
int main(int argc, char const *argv[])
{
// struct node *nine = (struct node*)malloc(sizeof(struct node*));
// nine->data = 9;
// nine->left = NULL;
// nine->right = NULL;
// struct node *ten = (struct node*)malloc(sizeof(struct node*));
// ten->data = 10;
// ten->left = NULL;
// ten->right = NULL;
// struct node *one = (struct node*)malloc(sizeof(struct node*));
// one->data = 1;
// one->left = ten;
// one->right = nine;
// struct node *four = (struct node*)malloc(sizeof(struct node*));
// four->data = 4;
// four->left = NULL;
// four->right = NULL;
// struct node *five = (struct node*)malloc(sizeof(struct node*));
// five->data = 5;
// five->left = one;
// five->right = four;
struct node *eight = (struct node*)malloc(sizeof(struct node*));
eight->data = 8;
eight->left = NULL;
eight->right = NULL;
struct node *six = (struct node*)malloc(sizeof(struct node*));
six->data = 6;
six->left = NULL;
six->right = NULL;
struct node *seven = (struct node*)malloc(sizeof(struct node*));
seven->data = 7;
seven->left = eight;
seven->right = NULL;
struct node *two = (struct node*)malloc(sizeof(struct node*));
two->data = 2;
two->left = six;
two->right = seven;
struct node *three = (struct node*)malloc(sizeof(struct node*));
three->data = 3;
three->left = NULL;
three->right = two;
top_view(three);
return 0;
}
輸出是這樣:
3
right 2
0x7fc800000003
[1] 2091 segmentation fault ./a.out
我哪裏錯了呢?
1)'8 =(結構節點*)malloc的(的sizeof(結構節點*));' - >'8 = malloc的(的sizeof(結構節點));' – BLUEPIXY
應該是'的sizeof(結構節點)' - 你只是爲指針分配足夠的內存。 –
'printf(「%d \ n」,temp-> right-> right-> data);''temp-> right-> right'爲NULL時會發生什麼? –