繁体   English   中英

打印树的节点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM