【发布时间】:2012-10-29 01:09:17
【问题描述】:
我需要打印一个如下所示的二叉树:
--------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-
【问题讨论】:
标签: c recursion binary-tree