2013-01-15 78 views
0

第一要素我只想打印n的BST树第一要素,所以我加入全局变量计数器写n的BST

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

但是,这个条件中,如果不工作?我犯了什么错误?

+0

凡'了'定义/初始化? – simonc

+2

什么是'a'?该代码不包含该变量的声明,因此很难说。此外,你应该跳过全局,而是有一个“当前深度”参数(使用专用的迭代函数来保持外部API)。 – unwind

+1

在lewe上打电话打印后,您可以增加a。在打印电话之后,您需要检查一下数值。 –

回答

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

在打印之前提到'a'应该设置为'0'。其他情况可能会连续2次运行失败 –