在处理树处理问题时,我对存储已观察到的特定模式的实例数的最佳方法感到困惑。
例如,假设我想返回二叉搜索树中数字可被 2 整除的次数。我将递归遍历该树,检查每个键是否可被 2 整除,然后递增一个计数器。
现在,我能想到的存储这个计数器的唯一方法是通过引用。 例如:
DivByTwo(node, counter) {
DivByTwo(node.left, counter)
DivByTwo(node.right, counter)
if (node.key % 2 == 0)
counter ++
}
完成后,counter 的值将是可被 2 整除的键数。这是处理此问题的正确方法吗?有没有更好的方法来捕获此数据而不强制用户通过引用传递一些变量?
最佳答案
这是一种避免传递 ref 参数的方法,尽管它需要能够返回一个值(您不包含任何类型信息,所以我对您的类型进行了最好的猜测):
int DivByTwo(NodeType node){
int result = DivByTwo(node.left) + DivByTwo(node.right);
if(node.key % 2 == 0)
result += 1;
return result;
}
关于c++ - 在递归函数中递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753841/