Выполнение некоторых курсовых работ, и мне нужно создать двоичное дерево поиска. Кусок торта, должно быть весело. Поскольку C++ не содержит словарь, я решил сделать его с помощью BST. Я нашел несколько примеров кода в Интернете, чтобы дать мне краткое представление о том, как они собраны вместе, и все это относительно просто, но, будучи новым для C++ и пришедшим из среды С#, одна вещь бросила меня в замешательство, и это "с". Я не понимаю, почему "c" возвращает true в цикле while или почему изменение данных слева или справа влияет на этот результат.
node* t = new node;
node* parent;
t->data;
t->left = NULL;
t->right = NULL;
parent = NULL;
...
node* c;
c = root;
while (c)
{
parent = c;
if(t->data > c->data)
{
c = c->right;
}
else //else it assigned left
{
c = c->left;
}
}
В C и C++ указатель считается ложным, если он равен null, и true в противном случае. Этот цикл while продолжает идти по дереву, пока c
станет нулевым указателем.
Кроме того, C++ имеет словари. Проверьте std::map
и std::unordered_map
.