6243 {
6244 if(root == nullptr) {
6245 return nullptr;
6246 }
6247 int prev_level = 0;
6248 Node *prev_node =
root;
6249 queue<pair<int, Node *>> q;
6250 if(
root->left !=
nullptr) {
6251 q.emplace(1,
root->left);
6252 }
6253 if(
root->right !=
nullptr) {
6254 q.emplace(1,
root->right);
6255 }
6256 while(!q.empty()) {
6257 auto [level, node] = q.front();
6258 q.pop();
6259 if(level == prev_level) {
6260 prev_node->next = node;
6261 }
6262 prev_level = level;
6263 prev_node = node;
6264 if(node->left != nullptr) {
6265 q.emplace(level + 1, node->left);
6266 }
6267 if(node->right != nullptr) {
6268 q.emplace(level + 1, node->right);
6269 }
6270 }
6272 }