【发布时间】:2019-04-03 23:16:58
【问题描述】:
我目前正在为二叉搜索树编写中序遍历,而我编写的函数工作正常,我有一个关于如何递归调用此函数的问题。
下面是我写的函数,目前使用这个实现的输出是正确的。
if(root == nullptr)
return;
inorderDump(root->leftSubtree());
cout << root->value() << endl;
inorderDump(root->rightSubtree());
我的问题是为什么这些递归调用不需要返回语句?下面用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
【问题讨论】:
-
"下面是我写的函数" - 我看不到函数定义。
-
好吧,在第二个中,
return inorderDump(root->leftSubtree());之后的任何内容都不会被执行。
标签: c++ recursion binary-search-tree