题目链接
https://leetcode-cn.com/problems/range-sum-of-bst/
解题思路
1.暴力遍历
遍历二叉树的所有节点,对于每个节点判断是否在[low,high]中即可
2.根据二叉搜索树的性质遍历
对于每个节点,我们判断根节点的情况:
root->val>high 说明右子树整体都>high
root->val<low 说明左子树整体都<low
else
左右子树都遍历
代码展示
class Solution {
public:
int rangeSumBST(TreeNode* root, int low, int high) {
if(root==nullptr)
return 0;
int f1=0,f2=0;
if(root->val>high)
return rangeSumBST(root->left,low,high);
if(root->val<low)
return rangeSumBST(root->right,low,high);
return root->val+rangeSumBST(root->left,low,high)+rangeSumBST(root->right,low,high);
}
};
总结
二叉搜索树的性质:
对于任意节点都有:
左子树的值都小于根节点值
右子树的值都大于根节点值