[英]Printing the nodes of a tree
我有一个这样表示的k进制树:
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; 并增加它,但是它将无法工作,因为递归调用将其重置。
void visit(struct node * head){static int i;
if (head == NULL)
return;
printf("%d\n", head->data);
printf("Level : %d\n",i);
for (i = 0; i < head->num; i++)
visit(head->kids[i]);
i = i + 1;
}
将另一个参数传递给递归函数
void visit(struct node *head, int level){
int i;
if (head == NULL)
return;
printf("%d : %d\n",level, head->data);
for (i = 0; i < head->num; i++)
visit(head->kids[i], level + 1);
}
并第一次通过将级别传递为零来调用该函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.