I는 다음과 같습니다 이진 트리를 인쇄해야합니다 라인의 왼쪽 첫 번째를 제외하고 라인의 오른쪽면을 인쇄하기 위해 재귀를 사용이진 트리 재귀 기능
--------x-------
----x-------x---
--x---x---x---x-
-x-x-x-x-x-x-x-x
xxxxxxxxxxxxxxxx
선. 따라서 함수는 왼쪽 시작점과 오른쪽 끝점의 매개 변수를 사용하여 표시 함수를 호출합니다. 그런 다음 왼쪽과 오른쪽에서 각각 두 번 호출합니다.
#include <stdio.h>
#define LENGTH 16
void makeBranches(int, int);
void display(int, int);
int main(){
makeBranches(0, LENGTH-1);
}
void makeBranches(int left, int right){
if(left >= right){
return;
} else{
display(left, right);
makeBranches(left, (right+left)/2);
makeBranches((right+left)/2+1, right);
}
}
void display(int left, int right){
int mid = (left+right)/2;
int i;
for(i = left; i <= right; i++){
if(i == mid)
printf("X");
else
printf("-");
}
if(right == LENGTH-1)
printf("\n");
}
이것은 여러 번 변경되었지만 현재 내 코드의 모습입니다.
makeBranches의 첫 번째 호출을 실행 한 다음 두 번째 호출을받는 방법을 알아낼 수 없습니다. 지금 만 왼쪽 호출을 수행하고 다음과 같습니다 : 이미 볼 수 있듯이
-------X--------
---X-----X--X-