【发布时间】:2015-03-02 10:06:46
【问题描述】:
我有一个像这样表示的 k-ary 树:
struct node {
int num;
int data;
struct node **kids;
}
我创建了一个函数来打印树节点的数据。
例子:
a
/ | \
b c d
/
e
将打印:
a
b
e
c
d
函数是:
void visit(struct node *head){
int i;
if (head == NULL)
return;
printf("%d\n", head->data);
for (i = 0; i < head->num; i++)
visit(head->kids[i]);
}
问题是,我怎样才能打印我打印的每个节点的级别。我试图声明一个变量 int level = 0;并增加它,但它不会工作,因为递归调用会重置它。
【问题讨论】:
-
只需将
level + 1作为参数传递给递归调用 -
您当前的函数
visit不应该将您的示例树打印为a b e c d而不是a b c d e吗? -
成功了。谢谢!
-
顺便说一句,您的函数确实按深度遍历,而不是按宽度遍历,因此输出不会如图所示。
-
是否可以编辑我的函数并按宽度遍历?