目录
题目:
代码(首刷看解析 2024年1月31日):
class Solution {
public:
int getMinimumDifference(TreeNode* root) {
vector<int> vec;
Helper(root, vec);
int min_val = INT_MAX;
for (int i = 0; i < vec.size() - 1; ++i) {
min_val = min(min_val, vec[i + 1] - vec[i]);
}
return min_val;
}
void Helper(TreeNode* cur, vector<int>& vec) {
if (!cur) return;
Helper(cur->left, vec);
vec.emplace_back(cur->val);
Helper(cur->right,vec);
}
};
代码(首刷看解析 2024年1月31日)
class Solution {
private:
int min_val = INT_MAX;
TreeNode* pre = nullptr;
public:
int getMinimumDifference(TreeNode* root) {
Helper(root);
return min_val;
}
void Helper(TreeNode* cur) {
if (cur == nullptr) return;
Helper(cur->left);
if (pre != nullptr) {
min_val = min(min_val, cur->val - pre->val);
}
pre = cur;
Helper(cur->right);
}
};
代码(二刷看解析 2024年5月18日)
class Solution {
public:
TreeNode* pre;
int res = INT_MAX;
void recursion(TreeNode* root) {
if (!root) return;
recursion(root->left);
if (pre != nullptr) {
res = min(res, root->val - pre->val);
}
pre = root;
recursion(root->right);
}
int getMinimumDifference(TreeNode* root) {
if (!root) return 0;
recursion(root);
return res;
}
};