题目
给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。
二叉搜索树保证具有唯一的值。
示例 1:
输入:root = [10,5,15,3,7,null,18], L = 7, R = 15
输出:32示例 2:
输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
输出:23提示:
- 树中的结点数量最多为 10000 个。
- 最终的答案保证小于 2^31。
思路一
直接遍历整个二叉树, 寻找大于等于L和小于等于R的结点的总和
1 | class Solution { |
思路二
对上面的方法进行优化, 因为给定的树是二叉搜索树, 所以
- 当结点小于L时, 只搜索该结点的右子树(左子树均小于L)
- 当结点大于R时, 只搜索该结点的左子树(右子树均大于R)
换句话说
- 只有结点大于L时, 才搜索左子树
- 只有结点小于R时, 才搜索右子树
1 | class Solution { |