给定二叉搜索树的根结点 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] 之间的值进行求和即可
public int rangeSumBST(TreeNode root, int low, int high) {List<Integer> valList = new ArrayList<>();inOrder(root,valList);int sum = 0;for (Integer val : valList) {if (val >= low && val <= high) {sum += val;}}return sum;}/*** 二叉搜索树的中序遍历结果是个有序数组** @param node* @param valList*/private void inOrder(TreeNode node, List<Integer> valList) {if (node == null) {return;}inOrder(node.left, valList);valList.add(node.val);inOrder(node.right, valList);}
