2013-01-15 3 views
0

에서 첫 번째 요소는 N BST 트리에서 첫 번째 요소는 그래서 난 전역 변수 카운터쓰기 N I 인쇄 할 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

'A' 정의/초기화된다? – simonc

+2

'a' 란 무엇입니까? 코드에는 해당 변수의 선언이 포함되어 있지 않으므로 알기 어렵습니다. 또한 전역을 건너 뛰고 대신 "현재 깊이"인수를 가져야합니다 (외부 API를 유지하는 전용 반복 함수 사용). – unwind

+1

lewe에서 print를 호출하면 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

은 print 호출 전에'a'가'0'으로 설정되어야한다고 언급합니다. 다른 조건은 2 연속 실행에서 실패 할 수 있습니다. –