В настоящее время я пишу обход inorder для бинарного дерева поиска, хотя написанная мной функция работает правильно, у меня возник вопрос о том, как я рекурсивно вызываю эту функцию.
ниже - функция, которую я написал, и вывод в настоящее время корректен, используя эту реализацию.
if(root == nullptr)
return;
inorderDump(root->leftSubtree());
cout << root->value() << endl;
inorderDump(root->rightSubtree());
Мой вопрос: почему эти рекурсивные вызовы не нуждаются в операторе return? Следующая функция, написанная точно так же с оператором return, не работает.
ниже - пример той же функции при использовании оператора return и неправильного вывода.
if(root == nullptr)
return;
return inorderDump(root->leftSubtree());
cout << root->value() << endl;
return inorderDump(root->rightSubtree());
Итак, я думаю, вкратце, что я пытаюсь сказать, в чем разница между рекурсивным вызовом функции с оператором return и без него, и когда вы выбираете одну из них над другой?
Спасибо!
Ниже приведены примеры данных, которые я использую для проверки этих рекурсивных функций.
16000
24507
64025
99756
114258
163016
196448
198668