Поиск значения символа в двоичном дереве поиска C - PullRequest
0 голосов
/ 08 июня 2018

У меня есть двоичное дерево поиска с ключом 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]).Если один или несколько узлов содержат объект 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;
}

1 Ответ

0 голосов
/ 08 июня 2018

Основная проблема заключается в том, что вы игнорируете возвращаемые значения из рекурсивных вызовов на nrTaskuri.

Попробуйте:

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