在二叉搜索树C

时间:2018-06-08 16:58:48

标签: c char binary-search-tree

我有一个带有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;
}

1 个答案:

答案 0 :(得分:0)

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

试试这个:

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