У меня возникли проблемы написания кода, чтобы определить, есть ли какие-то данные присутствует в моем дереве, это класс BinaryTreeNodeДвоичное дерево член Функция
class BinaryTreeNode {
public:
Data * nodeData;
BinaryTreeNode * left;
BinaryTreeNode * right;
функция мне нужно закончить это (не может изменить это определение)
bool BinaryTreeNode::member(Data * data) const {
Я пытался создать переменную как сиггепЬЫойе = это и использовать время цикла, чтобы проверить, какая сторона дерева прогрессировать вниз, а затем обновить сиггепЬЫойе, но я не могу чтобы это работало. Поэтому я думаю, возможно, это должно быть достигнуто с рекурсией? Я пробовал это, но программа блокируется.
Если бы кто-нибудь мог указать мне в правильном направлении, это было бы очень полезно.
Вот один из моих многочисленных попыток (это один пытается рекурсии):
bool BinaryTreeNode::member(Data * data) const {
if(nodeData == NULL) {
return false;
}
else if (nodeData->compareTo(data) == 0) {
return true;
}
while(this != NULL) {
if(nodeData->compareTo(data) == 0) {
return true;
}
else if(nodeData->compareTo(data) == 1) {
return left->member(data);
}
else if(nodeData->compareTo(data) == -1) {
return right->member(data);
}
}
return false;
}
Можете ли вы опубликовать код, который вы пробовали, чтобы мы могли помочь вам отладить – Pradheep
Обе ваши попытки могли выполнить эту работу. Но мы не можем сказать вам, где ошибка, очевидно. –
отредактировал op с моей попыткой рекурсии –