为什么节点级别未打印?每次通话后级别都会提高?代码中的问题出在哪里?
int levelNode(struct Node* root,int a,int level){
if(root==NULL){
return 0;
}
if(root->key==a){
return level;
}
levelNode(root->left,a,level+1);
levelNode(root->right,a,level+1);
}
答案 0 :(得分:1)
应该是
int levelNode(struct Node* root,int a,int level){
int found;
if(root==NULL){
return 0;
}
if(root->key==a){
return level;
}
found = levelNode(root->left,a,level+1);
if (found != 0) return found;
found = levelNode(root->right,a,level+1);
if (found != 0) return found;
return 0;
}
答案 1 :(得分:0)
Awwww,太多递归了!只是想指出,递归绝对是邪恶的,我个人会尽可能避免它(实际上,您总是可以避免它)。
在此线程中只是有一个替代解决方案。 如果您的树已排序,则只需执行以下操作即可:
string2_1
如果您的树未排序,则可以稍微修改我的代码以进行“适当的”完整BFS。
类似这样的东西:
string2_1()string2_2(