给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。

    示例 1:
    输入:root = [10,5,15,3,7,null,18], low = 7, high = 15
    输出:32

    示例 2:
    输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
    输出:23

    二叉搜索树的中序遍历结果是一个升序的有序序列,只要在有序序列中取 [low, high] 之间的值进行求和即可

    1. public int rangeSumBST(TreeNode root, int low, int high) {
    2. List<Integer> valList = new ArrayList<>();
    3. inOrder(root,valList);
    4. int sum = 0;
    5. for (Integer val : valList) {
    6. if (val >= low && val <= high) {
    7. sum += val;
    8. }
    9. }
    10. return sum;
    11. }
    12. /**
    13. * 二叉搜索树的中序遍历结果是个有序数组
    14. *
    15. * @param node
    16. * @param valList
    17. */
    18. private void inOrder(TreeNode node, List<Integer> valList) {
    19. if (node == null) {
    20. return;
    21. }
    22. inOrder(node.left, valList);
    23. valList.add(node.val);
    24. inOrder(node.right, valList);
    25. }