C 从bst写入n个第一个元素

C 从bst写入n个第一个元素,c,binary-search-tree,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

我只想从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 );
    }
}
inta=0;
无效打印(wezel**korzen,int x)
{
如果((*korzen)!=NULL&&(alewe),x;
a++;
printf(“%s%d\n”,(*korzen)->wartosc,(*korzen)->ile);
打印(&((*korzen)->prawe),x;
}
}

但这种情况在if中不起作用吗?我哪里出错了?

正如我在评论中提到的,在第一次打印后,您没有检查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 );
        }
    }
}
inta=0;
无效打印(wezel**korzen,int x)
{
如果((*korzen)!=NULL&&(alewe),x;
//A自上次检查以来已增加
if(awartosc,(*korzen)->ile);
a++;
打印(&((*korzen)->prawe),x;
}
}
}

定义/初始化的
a
在哪里?什么是
a
?代码没有包含该变量的声明,因此很难判断。另外,您应该跳过全局,而是使用一个“current depth”参数(使用一个专用的迭代函数来保留外部API)。在打印调用之后,您需要检查a的值。
a
是全局变量吗?在调用BST的
print()
itset为0:)之前,您需要将其设置为
0
。在调用print()之前,它只是不停地将
a
设置为
0
。其他条件可能在连续两次运行中失败