考察知识点: 树的遍历、递归

二叉搜索树的中序遍历序列是一个递增序列。

题目分析:

中序遍历一遍即可。递归的基准条件是root为空树,否则先遍历左子树,然后访问根节点,判断根节点的值是否在区间内,在区间内则加到结果中,然后遍历右子树。

所用编程语言: C++

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param low int整型 
     * @param high int整型 
     * @return int整型
     */
    void traversal(TreeNode *root, int low, int high, int &res) {
        if (!root) return;
        traversal(root->left, low, high, res);
        int val = root->val;
        if (val >= low && val <= high) res += val;
        traversal(root->right, low, high, res);
    }
    int rangeSumBST(TreeNode* root, int low, int high) {
        // write code here
        if (!root) return 0;
        int res = 0;
        traversal(root, low, high, res);
        return res;
    }
};