------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
提示
虽然题目要求“必须使用二叉树”,但STEVE买到的树苗有个隐藏特性:所有树苗的高度恒为 0(无论你在输入中输入什么 h,实际种下的高度都是 0)。因此,你根本不需要维护高度值,只需要记录哪些位置有树苗即可。
真正的正解是:
* 用一个 std::set<int> 存储所有已种树苗的位置。
* plant x h:如果 x 不在集合中,就插入(h 忽略)。
* remove x:如果存在,就删除。
* query x:如果存在输出 0,否则输出 -1。
* max:如果集合非空,输出 *s.begin()(最小位置)和 0,否则输出 -1 -1。
你甚至不需要读取 h 的值,读入即可丢弃。
出题人寄语:
本题是愚人节特供,专治各种“看见二叉树就写红黑树”的强迫症选手。真正的代码不超过 30 行,而你如果写了 200 行平衡树旋转……恭喜你,成功被STEVE骗了。😈