Этот код неверен.Рассмотрим следующее дерево:
b
/ \
a f
/ \
d g
/ \
c e
Последовательный преемник b
равен c
.Ваша функция считает, что преемник в порядке f
.Чтобы найти преемника по порядку, вам нужно разобраться с несколькими случаями;у этого дерева примеров есть экземпляр каждого случая, который должен быть обработан.Начните с каждого узла и запишите шаги, необходимые для поиска преемника по порядку для каждого узла.
Если вам интересно, вы можете найти реализацию алгоритма с полным объяснением в ответ, который я дал на другой вопрос .
Нанесвязанное примечание, ваша функция почти наверняка должна возвращать std::pair
по значению , и вы не должны динамически выделять std::pair
.