我想打印到我的排序树这个数字的哪个级别,并且必须是递归函数。
这是我的代码:
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
答案 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);