Итак, я работаю над методом, который получает число узлов в двоичном дереве поиска, когда у меня есть 3 узла, это дает мне 3, но если я делаю 5, дает мне 4, что мне нужно изменить?Получение числа узлов в двоичном дереве поиска
int BinaryTree::size(int count, Node *leaf) const
{
if(leaf != NULL)//if we are not at a leaf
{
size(count + 1, leaf->getLeft());//recurisvly call the function and increment the count
size(count + 1, leaf->getRight());
}
else
{
return count;//return the count
}
}
Просить людей обнаружить ошибки в коде не особенно продуктивно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, отслеживая ход вашей программы и сравнивая ее с тем, что вы ожидаете. Как только двое расходятся, вы нашли свою проблему. (И затем, если необходимо, вы должны построить [минимальный тестовый сценарий] (http://sscce.org).) –
Вам не хватает оператора возврата в истинном ветви вашего 'if' –
. У вас нет возвращаемое значение в первом блоке оператора 'if'. Какую ценность вы хотели бы вернуть? – Lorkenpeist