Для класса я должен создать двоичное дерево объектов состояния, каждое из которых включает в себя двоичное дерево резидентных объектов, организующих людей, которые живут в каждом штате. Я пытаюсь найти общее дерево состояний для человека по имени (как государственные, так и резидентные деревья организованы в алфавитном порядке по имени), который включает в себя перемещение всего дерева состояний и поиск дерева резидентного состояния для указанного лица. Очевидно, что обход дерева дерева не работает, потому что большую часть времени он говорит мне, что человек не находится в базе данных (т. Е. Мой метод stateforperson, указанный ниже, дерева возвращает NULL), когда я знаю, что они существуют в базе данных. Я уверен, что мой метод searchfor() работает.Обход двоичного дерева (в основном) Неудача
node <Person*> * stateforperson (string nm, node <T> * n)
{ if (n != NULL)
{
node <Person*> * person = n->data->residents->searchfor(nm);
if (person != NULL)
return person;
return stateforperson(nm, n->left);
return stateforperson(nm, n->right);
}
else
return NULL;
}
Покушение Update:
node <Person*> * stateforperson (string nm, node <T> * n)
{ if (n != NULL)
{
node <Person*> * person = n->data->residents->searchfor(nm);
if (person != NULL)
return person;
// Here, you explore the left branch and get the results.
node <Person*> * left_ret = stateforperson(nm, n->left);
// Here, same with right branch.
node <Person*> * right_ret = stateforperson(nm, n->right);
// You now have both results.
if (left_ret != NULL) // If a result was found in left branches, you return that person.
return left_ret;
else if (right_ret != NULL) // Same with right branch.
return right_ret;
else // The problem was here. Before you returned uninitialized memory. (because there wasn't a specified return value.
// Now, you return a NULL pointer if nothing was found.
//So you detect that no person was found and don't use unitialized memeory.
return (NULL);
}
else
return NULL;
}
Так не название государства не предусмотрено? Вам просто нужно искать каждое дерево состояний? –
Yup. Профессор знает, что я знаю, как искать государство; теперь он тестирует, можно ли искать деревья в деревьях и разбираться с обходами, которые необязательно требуют определенного порядка для них. – jiccan