return 值存储在哪里并且 how/can 它们会递增?
Where are return values stored and how/can they be incremented?
我已经完成了相当多的阅读和研究工作,但我仍然没有 100% 理解它。
对于“二叉树的最小深度”这个解决方案,在递归函数中有多个 return 的想法让我很沮丧。我不确定“最小深度”的值是如何增加的,我知道这可能与我对 return 语句工作的误解有关。请帮忙,谢谢。
int minDepth(Node *root) {
if(!root) return 0;
if(!root->left) return 1 + minDepth(root->right);
if(!root->right) return 1 + minDepth(root->left);
return 1+min(minDepth(root->left),minDepth(root->right));
}
如果有帮助,从逻辑上讲,您上面的内容也可以写成
int minDepth(Node *root) {
int result;
if(!root)
result = 0;
else if(!root->left)
result = 1 + minDepth(root->right);
else if(!root->right)
result = 1 + minDepth(root->left);
else
result = 1 + min(minDepth(root->left), minDepth(root->right));
return result;
}
我已经完成了相当多的阅读和研究工作,但我仍然没有 100% 理解它。 对于“二叉树的最小深度”这个解决方案,在递归函数中有多个 return 的想法让我很沮丧。我不确定“最小深度”的值是如何增加的,我知道这可能与我对 return 语句工作的误解有关。请帮忙,谢谢。
int minDepth(Node *root) {
if(!root) return 0;
if(!root->left) return 1 + minDepth(root->right);
if(!root->right) return 1 + minDepth(root->left);
return 1+min(minDepth(root->left),minDepth(root->right));
}
如果有帮助,从逻辑上讲,您上面的内容也可以写成
int minDepth(Node *root) {
int result;
if(!root)
result = 0;
else if(!root->left)
result = 1 + minDepth(root->right);
else if(!root->right)
result = 1 + minDepth(root->left);
else
result = 1 + min(minDepth(root->left), minDepth(root->right));
return result;
}