题解 | #农场牛的最佳观赏区间#
农场牛的最佳观赏区间
https://www.nowcoder.com/practice/7b49f5ad9814424d8c41de44f671d59e
考察的知识点:二叉搜索树、深度优先搜索;
解答方法分析:
- 定义一个递归函数rangeSum,接收一个指向根节点的指针参数root以及区间的最小值low和最大值high,并返回区间内所有节点值的和。
- 在rangeSum函数中,首先判断根节点root是否为空。若为空,则返回0,表示当前子树无节点。
- 接着判断根节点的值是否在区间范围内。若不在范围内,则继续递归遍历左子树(当root->val > high时)或右子树(当root->val < low时),并返回子树内节点值的和。
- 若根节点的值在区间范围内,则将根节点的值加入结果中,然后继续递归遍历左子树和右子树,将它们返回的值累加到结果中。
- 最后返回累加结果。
所用编程语言:C++;
完整编程代码:↓
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
int rangeSum(TreeNode* root, int low, int high) {
if (root == nullptr) {
return 0;
}
if (root->val < low) {
return rangeSum(root->right, low, high);
}
if (root->val > high) {
return rangeSum(root->left, low, high);
}
int sum = root->val;
sum += rangeSum(root->left, low, high);
sum += rangeSum(root->right, low, high);
return sum;
}
int rangeSumBST(TreeNode* root, int low, int high) {
return rangeSum(root, low, high);
}
};

SHEIN希音公司福利 356人发布