题目考察的知识点
- 二叉搜索树遍历
- 中序遍历
题目解答方法的文字分析
rangeSumBST 方法接收 TreeNode 类型参数,以及两个 int 类型的参数 low 和 high,并返回一个整型结果。
在 rangeSumBST 方法中,首先检查 root 是否为 null,如果是,则返回0。
继续检查 root 的值与 low 和 high 的大小关系。如果 root 的值小于 low,则递归调用 rangeSumBST 方法传入右子树,同时保持 low 和 high 参数不变,忽略当前节点及其左子树。如果 root 的值大于 high,则递归调用 rangeSumBST 方法传入左子树,同时保持 low 和 high 参数不变,忽略当前节点及其右子树。如果 root 的值在 low 和 high 之间(包含边界),则将 root 的值累加到结果中,并同时递归调用 rangeSumBST 方法传入左子树和右子树,保持相同的 low 和 high 参数。
返回计算得到的结果作为方法的返回值。
本题解析所用的编程语言
- cpp
完整且正确的编程代码
class Solution { public: int rangeSumBST(TreeNode* root, int low, int high) { if (root == nullptr) return 0; if (root->val < low) return rangeSumBST(root->right, low, high); if (root->val > high) return rangeSumBST(root->left, low, high); return root->val + rangeSumBST(root->left, low, high) + rangeSumBST(root->right, low, high); } };
EOF