二叉树,打印出我所处的级别

时间:2011-06-26 18:22:09

标签: c binary-tree

我想打印到我的排序树这个数字的哪个级别,并且必须是递归函数。

这是我的代码:

void printout(KNOTEN *start) {  
    if (start == NULL)
        return;

    printout(start->left);
    printf("%d\n", start->number);
    printout(start->right);

    free(start);
}

以下是输出示例:

My input Numbers 41, 18467, 6334 , 26500, 19169
Outprint is 41,6334,18467,19169,26500

我想要的是:

41 Level 1 , 6334 level 3 , 18467 level 2 , 26500 level 3 , 19169 level 4

3 个答案:

答案 0 :(得分:1)

我会修改它:

void printout(KNOTEN *start, int depth)
{   
    if(start == NULL)
        return;

    printout(start->left, depth+1);
    printf("%d(%d) \n",start->number, depth);
    printout(start->right, depth+1);

    free(start);
 }

答案 1 :(得分:1)

这是一个提示。你的原型是这个

printout(KNOTEN *start, int the_level)

这就是你打电话来开始搜索的方式。

printout(node, 1);

并且代码中的两个地方都有一个the_level + 1.

祝你好运

答案 2 :(得分:0)

这听起来像是家庭作业,所以我不打算给你完整的代码。但这个想法是要计算你做过多少次递归调用:

int myRecursiveFunction(Node *node, int thingToFind, int level)
{
    if (someCondition())
    {
        return level;
    }
    else
    {
        if (goLeft())
        {
            return myRecursiveFunction(node->left, thingToFind, level+1);
        }
        else
        {
            return myRecursiveFunction(node->right, thingToFind, level+1);
        }
    }
}


...

int level = myRecursiveFunction(root, thingToFind, 0);