我有一个带有INT键的二叉搜索树(int cod)。有用于它的结构,在测试中表现良好;二叉树节点具有来自Task结构
的信息struct Task {
int cod;
char*inginer;
int nrActivitati;
char**activitati;
};
struct nod {
Task info;
nod *st, *dr;
};
struct nodLista {
Task info;
nodLista *next;
};
我想在这个二叉树中搜索char值(char [20])。如果一个或多个节点包含在 inginer 字段中存储完全相同值的Task对象,我希望变量 nrTasks 将 nrActivitati <添加到其当前值/ strong>来自该对象的字段值...但是这里有些东西不起作用。有任何想法吗?希望你理解我的解释。无论节点信息如何,此函数仅返回0。
int nrTaskuri(nod*root, char ing[20]) {
int nrTasks = 0;
if (root) {
if (strcmp(root->info.inginer, ing)==0) {
nrTasks += root->info.nrActivitati;
}
if (root->st) {
nrTaskuri(root->st, ing);
}
if (root->dr) {
nrTaskuri(root->dr, ing);
}
}
else printf("Tree is empty");
return nrTasks;
}
答案 0 :(得分:0)
主要问题是你忽略了递归调用nrTaskuri
的返回值。
试试这个:
if (root->st) {
nrTasks += nrTaskuri(root->st, ing);
}
if (root->dr) {
nrTasks += nrTaskuri(root->dr, ing);
}