从bst写出n个第一个元素

时间:2013-01-15 14:24:47

标签: c binary-search-tree

我想只从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 );
    }
}

但这种情况如果不起作用?哪里弄错了?

1 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,你不会在第一次印刷后检查:

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 );
        }
    }
}