欢迎大家积极在评论区留言发表自己的看法,知无不言,言无不尽,养成每天刷题的习惯,也可以自己发布优质的解题报告,供社区一同鉴赏,吸引一波自己的核心粉丝。
今天是七月集训第二十天:二叉搜索树🔥🔥🔥

938. 二叉搜索树的范围和
剑指 Offer II 054. 所有大于等于节点的值之和
538. 把二叉搜索树转换为累加树
1038. 从二叉搜索树到更大和树
// 938. 二叉搜索树的范围和
class Solution {
int sum = 0;
void dfs(TreeNode* root, int low, int high) {
if(root == nullptr) {
return ;
}
dfs(root->left, low, high);
if(root->val >= low && root->val <= high) {
sum += root->val; //(1)
}
dfs(root->right, low, high);
}
public:
int rangeSumBST(TreeNode* root, int low, int high) {
dfs(root, low, high);
return sum;
}
};
// 剑指 Offer II 054. 所有大于等于节点的值之和
// 538. 把二叉搜索树转换为累加树
// 1038. 从二叉搜索树到更大和树
class Solution {
vector<TreeNode*> iod;
void dfs(TreeNode* root) {
if(root == nullptr) {
return ;
}
dfs(root->left);
iod.emplace_back(root);
dfs(root->right);
} //(1)
public:
TreeNode* convertBST(TreeNode* root) {
dfs(root);
for(int i = iod.size() - 2; i >= 0; i--) {
iod[i]->val += iod[i + 1]->val; //(2)
}
return root;
}
};