差了五分钟写出来的,不知道思路对不对,不用建树,把数组导入队列,比头节点小的导入左队列,大的放入右队列,对两个队列递归求出深度,判断是否满足a-balance,不知道这么考虑是否有问题。int judge(queue<int>& q,int n) { if (q.size() == 0) return 0; int temp = q.front(); q.pop(); queue<int> left; queue<int> right; while (!q.empty()) { int t = q.front(); if (t > temp) { right.push(t); q.pop(); } else { left.push(t); q.pop(); } } int l = judge(left, n); int r = judge(right, n); if (l == -1 || r == -1) return -1; if (abs(r - l) > min(11, n)) return -1; else return max(l, r) + 1; } int main() { int group; cin >> group; while (group--) { int n; cin >> n; vector<int> array(n); queue<int> q; for (int i = 0; i < n; i++) { cin >> array[i]; q.push(array[i]); } if(judge(q, n)!=-1) cout<<"yes"<<endl; }
点赞 评论

相关推荐

给🐭🐭个面试机会吧:我boss直聘天天有家教跟我打招呼😓
点赞 评论 收藏
分享
牛客网
牛客企业服务