ฉันมีสองฟังก์ชันที่สำรวจแผนผังใน preorder
และ postorder
โดยแต่ละฟังก์ชันจะแทรกค่าในโหนดลงในอาร์เรย์ และส่งคืนอาร์เรย์
อย่างไรก็ตาม ฟังก์ชัน postorder
ของฉันไม่ทำงาน ฉันได้รับข้อผิดพลาดในการแบ่งส่วนเมื่อมีการเรียกใช้ฟังก์ชัน
เมื่อคอมไพล์และรันโค้ดต่อไปนี้ แต่หลังจากเรียกใช้เมธอด postorder
ฉันได้รับข้อผิดพลาดในการแบ่งเซ็กเมนต์
นี่คือรหัสของฉัน:
int* preorder_recursive(node *root, int* dataArray)
{
if (root == NULL)
return dataArray;
for (int i = 0; i < 512; i++)
{
if (dataArray[i] == INT_MIN)
{
dataArray[i] = root->data;
printf("%d is being inserted to the preorder array at pos %d\n", root->data, i);
break;
}
}
preorder_recursive(root->left, dataArray);
preorder_recursive(root->right, dataArray);
}
int* postorder_recursive(node *root, int *dataArray)
{
if (root == NULL)
return dataArray;
postorder_recursive(root->left, dataArray);
postorder_recursive(root->right, dataArray);
for (int i = 0; i < 512; i++)
{
// any "empty" spots in the array should contain INT_MIN
if (dataArray[i] == INT_MIN)
{
dataArray[i] = root->data;
printf("%d is being inserted to the postorder array at pos %d\n", root->data, i);
break;
}
}
}
เมื่อโทร:
int * complete_pre_b = preorder_recursive(b, pre_order_b);
for(int i = 0; i < 3; i++)
{
printf("pre b is %d\n", complete_pre_b[i]);
}
int * complete_post_b = postorder_recursive(b, post_order_b);
// here is the last print I see - code get till here fine
for(int i = 0; i < 3; i++)
{
printf("post b is %d\n", complete_post_b[i]);
}
(ประกาศ - ฉันมีต้นไม้ที่มี 3 โหนดว่าทำไมฉันถึงวนซ้ำ i จาก 0 ถึง 3)
มีปัญหาอะไรบ้าง? โพสต์ของฉันและการสั่งซื้อล่วงหน้าแตกต่างกันอย่างไร?