在二进制搜索树C中搜索char值

在二进制搜索树C中搜索char值,c,char,binary-search-tree,C,Char,Binary Search Tree,我有一个带有INT键(intcod)的二叉搜索树。有用于它的结构,在测试中工作良好;二叉树节点的信息来自任务结构 struct Task { int cod; char*inginer; int nrActivitati; char**activitati; }; struct nod { Task info; nod *st, *dr; }; struct nodLista { Task info; nodLista *nex

我有一个带有INT键(intcod)的二叉搜索树。有用于它的结构,在测试中工作良好;二叉树节点的信息来自任务结构

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 ing[20])。如果一个或多个节点包含一个任务对象,该任务对象在Inner字段中存储了完全相同的值,我希望变量nrTasks将该对象的nrActivitati字段值添加到其当前值中…但此处有些不起作用。有什么想法吗?希望你能理解我的解释。无论节点信息如何,此函数仅返回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;
}

主要问题是您忽略了对
nrTaskuri
的递归调用的返回值

试试这个:

    if (root->st) {
        nrTasks += nrTaskuri(root->st, ing);
    }
    if (root->dr) {
        nrTasks += nrTaskuri(root->dr, ing);
    }

非常感谢你!!这么简单的事情,我都没注意到。现在可以了