😝二叉查找树实现
有几个难点
- 递归插入的时候要通过一个辅助变量来更新每个节点的值(low_count)
- 处理值相同时的情况
因为插入是沿着一条路径下去的,所以是没有办法在插入的时候更新全部节点的。
😳方案一是:选择单独在插入之后再来更新节点。
😳方案二是:更新一边的节点,在这个题目中,我们的选择就是只更新左边的节点,这时Node->low_count代表的就不是全体中比它小的节点数量,而是当前根节点下比它小的数量,而向右移动就是切换根节点。
因为我们是以根节点标准开始进行比较,所以我们用辅助变量更新节点是更新不到起点以外的地方的。
🥦方案二:
1 | class Solution { |
Accepted
16/16 cases passed (64 ms)
Your runtime beats 55.66 % of cpp submissions
Your memory usage beats 10.86 % of cpp submissions (29.7 MB)
🍅方案一:
1 | class Solution { |
Time Limit Exceeded
15/16 cases passed (N/A)
Testcase
[5183,2271,3067,539,8939,2999,9264,737,3974,5846,-210,9278,5800,2675,6608,1133,-1,6018,9672,5179,9842,7424,-209,2988,2757,5984,1107,2644,-499,7234,7539,6525,347,5718,-742,1797,5292,976,8752,8297,1312,3385,5924,2882,6091,-282,2595,96,1906,8014,7667,5895,7283,7974,-167,7068,3946,6223,189,1589,2058,9277,-302,8157,8256,5261,8067,1071,9470,2682,8197,5632,753,3179,8187,9042,8167,4657,7080,7801,5627,7917,8085,928,-892,-427,3685,4676,2431,8064,8537,343,505,4352,2108,4399,66,2086,1922,9126,9460,393,443,5689,7595,850,8493,2866,732,3738,7933,3666,2370,5804,4045,7903,8009,5387,5542,7593,6862,1547,6934,-160,9693,4560,7429,9989,7232,-594,587,6476,9277,4471,5979,6268,2419,6706,-727,1927,7361,9684,5519,2703,1723…..