

#procxxmeet #moscow
Size: a a a
bool findStrInSimpleTree(const char *str, size_t len,
const SimpleTree &tree, size_t &out_val, bool str_is_substr/*=true*/)
{
// Если штука равна ноде в дереве, то:
// Если нода пустая, то возвращаем значение.
// Иначе ищем его по массиву
if (len < tree.node.len) {
return false;
}
if (_strnicmp(str, tree.node.str, tree.node.len) == 0) {
if (tree.subnodes_count != 0) {
for (size_t i = 0; i < tree.subnodes_count; i++) {
if (findStrInSimpleTree(str + tree.node.len,
len - tree.node.len, tree.subnodes[i],
out_val, str_is_substr)) {
return true;
}
}
}
// случай, если у нас входная строчка больше, чем строчка в дереве.
if (!str_is_substr && len > tree.node.len) {
return false;
}
out_val = tree.node.id;
return true;
} else {
return false;
}
}