#include<bits/stdc++.h>
using namespace std;
class Node {
public:
int data;
Node* right;
Node* left;
Node(int data) {
this->data = data;
this->right = nullptr;
this->left = nullptr;
}
void level_order_traversal_sorted() {
if (!this) return;
queue<Node*> q;
q.push(this);
while (!q.empty()) {
int count = q.size();
vector<Node*> level_nodes;
for (int i = 0; i < count; i++) {
Node* temp = q.front();
q.pop();
level_nodes.push_back(temp);
if (temp->left) q.push(temp->left);
if (temp->right) q.push(temp->right);
}
sort(level_nodes.begin(), level_nodes.end(), [](Node* a, Node* b) {
return a->data > b->data;
});
for (auto node : level_nodes) {
cout << node->data << " ";
}
cout << endl;
}
}
};
int main(){
Node* root = new Node(25);
root->left = new Node(3);
root->left->left = new Node(5);
root->right = new Node(7);
root->right->left = new Node(30);
root->right->right = new Node(6);
root->level_order_traversal_sorted();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE5vZGUgewpwdWJsaWM6CiAgICBpbnQgZGF0YTsKICAgIE5vZGUqIHJpZ2h0OwogICAgTm9kZSogbGVmdDsKCiAgICBOb2RlKGludCBkYXRhKSB7CiAgICAgICAgdGhpcy0+ZGF0YSA9IGRhdGE7CiAgICAgICAgdGhpcy0+cmlnaHQgPSBudWxscHRyOwogICAgICAgIHRoaXMtPmxlZnQgPSBudWxscHRyOwogICAgfQoKICAgIHZvaWQgbGV2ZWxfb3JkZXJfdHJhdmVyc2FsX3NvcnRlZCgpIHsKICAgICAgICBpZiAoIXRoaXMpIHJldHVybjsKCiAgICAgICAgcXVldWU8Tm9kZSo+IHE7CiAgICAgICAgcS5wdXNoKHRoaXMpOwoKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICBpbnQgY291bnQgPSBxLnNpemUoKTsKICAgICAgICAgICAgdmVjdG9yPE5vZGUqPiBsZXZlbF9ub2RlczsKCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgTm9kZSogdGVtcCA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgICAgIHEucG9wKCk7CiAgICAgICAgICAgICAgICBsZXZlbF9ub2Rlcy5wdXNoX2JhY2sodGVtcCk7CgogICAgICAgICAgICAgICAgaWYgKHRlbXAtPmxlZnQpIHEucHVzaCh0ZW1wLT5sZWZ0KTsKICAgICAgICAgICAgICAgIGlmICh0ZW1wLT5yaWdodCkgcS5wdXNoKHRlbXAtPnJpZ2h0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc29ydChsZXZlbF9ub2Rlcy5iZWdpbigpLCBsZXZlbF9ub2Rlcy5lbmQoKSwgW10oTm9kZSogYSwgTm9kZSogYikgewogICAgICAgICAgICAgICAgcmV0dXJuIGEtPmRhdGEgPiBiLT5kYXRhOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAoYXV0byBub2RlIDogbGV2ZWxfbm9kZXMpIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgbm9kZS0+ZGF0YSA8PCAiICI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfTsKaW50IG1haW4oKXsKICAgCgogICAgTm9kZSogcm9vdCA9IG5ldyBOb2RlKDI1KTsKICAgIHJvb3QtPmxlZnQgPSBuZXcgTm9kZSgzKTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgPSBuZXcgTm9kZSg1KTsKICAgIHJvb3QtPnJpZ2h0ID0gbmV3IE5vZGUoNyk7CiAgICByb290LT5yaWdodC0+bGVmdCA9IG5ldyBOb2RlKDMwKTsKICAgIHJvb3QtPnJpZ2h0LT5yaWdodCA9IG5ldyBOb2RlKDYpOwogICAgcm9vdC0+bGV2ZWxfb3JkZXJfdHJhdmVyc2FsX3NvcnRlZCgpOwogICAgcmV0dXJuIDA7Cn0=