递归树遍历

格雷格
struct Node {
    char*label;
    struct Node *children;     
};

我正在尝试遍历树并根据当前深度打印节点的值/标签(如上定义)。

输出:

输出量

我的代码:

void recurse_helper(struct Node **root, int level, int max_level){
    if (level > max_level){
        return;
    }
    struct Node* r = *root;
    if(r->children == NULL){
    }

    else{
        struct Node *current = r->children;
}
void traverse_and_print(struct Node* root, max_dep){

   recurse_helper(&root, 0,max_dep);

}

我的代码似乎无法正常工作。有没有人有更好的递归解决方案,或者有人可以建议如何更改我当前的实现?

斯蒂芬·多西

这似乎可以解决问题。

void printTree(Node *root, int level) {
    if (root == NULL)
        return;

    for (int i = 0; i < level; i++) {
        printf("   ");
    }

    printf("%s\n", root->data);

    for (Node *child = root->children; child != NULL; child = child->next_sib) {
        printTree(child, level + 1);
    }
}

它没有实现max_level,我将其留给您进行广告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章