题目链接
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
set<int>S;
void dfs(TreeNode* root)
{
if(!root)return ;
S.insert(root->val);
dfs(root->left);
dfs(root->right);
}
int getNumber(TreeNode* root, vector<vector<int>>& ops) {
dfs(root);
reverse(ops.begin(),ops.end());
int res=0;
for(auto op : ops)
{
int l=op[1],r=op[2];
while(1)
{
auto t=S.lower_bound(l);
if(t==S.end()||*t>r)break;
S.erase(t);
if(op[0]==1)res++;
}
}
return res;
}
};