c++ - 我可以cout但不返回为什么?请提出更改建议
问题描述
在此处输入图像描述我可以 coutA->val
但无法返回A->val
。为什么?因为我们只能进入 for 循环一次,它应该返回它。请解释这样返回的逻辑错误。还建议任何更改。感谢您的帮助。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
right(right) {}
* };
*/
class Solution {
public:
int kthSmallest(TreeNode* A, int B) {
if (A == NULL)
{
return -1;
}
int res;
int k = B;
static int i = 0;
if (A != NULL)
{
kthSmallest(A->left, B);
i++;
if (i == k)
{
int res = A->val;
cout << A->val;
return res;
}
kthSmallest(A->right, B);
}
return -111;
}
};
解决方案
像这样的东西怎么样,函数覆盖初始化num
为0
?:
const TreeNode *kthSmallest(const TreeNode *A, const int k, int &num) {
if (!A) return nullptr;
const TreeNode *left = kthSmallest(A->left, k, num);
if (left != nullptr) return left;
num++;
if (k == num) return A;
return kthSmallest(A->right, k, num);
}
const TreeNode *kthSmallest(const TreeNode *A, const int k) {
int num{};
return kthSmallest(A, k, num);
}
推荐阅读
- python - 我在 glMultiDrawArraysIndirect 函数中出了什么问题?
- javascript - 在 HTML 表中使用 Javascript 更改输入类型
- javascript - 将用户输入传递给服务器以进行 C++ 编译
- c++ - QML 对象不更新显示
- android - MediaCrypto 使用 HLS/DASH AES h.264 Android 加密视频文件
- react-native - 在不更新状态的情况下重新渲染 React useState
- javascript - D3.js v3 点图直方图重复值
- r - 将整数数字转换为百分比
- python - 实现文件的 Conda + Pytest ModuleNotFoundError
- swift - Swift中的循环延迟问题,有什么区别?