繁体   English   中英

在二元搜索树C中搜索char值

[英]Search for a char value in a binary seach tree C

我有一个带有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 ing [20])。 如果一个或多个节点包含一个Task对象,该对象在inginer字段中存储了完全相同的值,我希望变量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);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM