我只想从bst树中打印n个第一元素,所以我添加了全局变量计数器

int a = 0;
void print (wezel **korzen,int x)
{
    if((*korzen) != NULL && (a < x))
    {
        print( &((*korzen)->lewe),x );
        a++;
        printf("%s %d\n", (*korzen)->wartosc, (*korzen)->ile);
        print( &((*korzen)->prawe),x );
    }
}


但是这个条件在如果不起作用?我在哪里弄错了?

最佳答案

正如我在评论中提到的,在第一次打印后,您无需检查a:

int a = 0;
void print (wezel **korzen,int x)
{
    if((*korzen) != NULL && (a < x))
    {
        print( &((*korzen)->lewe),x );
        // A has incremented since last check
        if (a < x) {
            printf("%s %d\n", (*korzen)->wartosc, (*korzen)->ile);
            a++;
            print( &((*korzen)->prawe),x );
        }
    }
}

09-30 14:01