Leetcode 938. Range Sum of BST
题目链接: Range Sum of BST
难度:Easy
题目大意:
求二叉搜索树上符合题意的节点值之和。
思路:
利用递归,判断根节点的值是否符合题意,符合的话讲要返回的结果加上这个值,如何再对左子树和右子树进行相同的操作。因为二叉查找树左子树的所有节点都比根节点的值小,右子树的所有节点都比根节点的值大,可以利用这一特点对程序进行优化。
代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
//二叉查找树,左子树的所有节点都比根节点的值小,右子树的所有节点都比根节点的值大
public int rangeSumBST(TreeNode root, int low, int high) {
if(root==null){
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);
}
}