是否可以打印节点数组?我需要显示正在构建的AVL树,但是每当我运行这段代码时,程序就会崩溃。有别的办法吗?

     int k = 0;
    t = NULL;
    node* nodearray[32];
    for( j = 0; j < 33; j++)
    {
        printf ("Table %d \n", j+1);
        printf ("LineNum Left Data Right\n");
        t = Insert(j, a[j], t );

    for (k= 0 ; k < j ; k ++)
    {
         printf ("%5d %5d %5d %5d", nodearray[k]->num, nodearray[k]->left->data, nodearray[k]->data, nodearray[k]-> right ->data);
    }
}

最佳答案

问题:
nodearray未初始化-其中的指针具有不确定的值。取消对它们的引用将调用未定义的行为。
for( j = 0; j < 33; j++)-但您声明nodearray为32个元素长。如果看不到Insert()的实现,很难说是什么,但可能还有一个off-by-one错误(读/写超过了数组的末尾)。

08-17 05:35