Advertisement
greannmhar

Bfs

Dec 2nd, 2024
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include <queue>
  2.  
  3. void ConnectNext(TreeNode* root) {
  4. if (!root) return;
  5.  
  6. std::queue<TreeNode*> q;
  7. q.push(root);
  8.  
  9. while (!q.empty()) {
  10. int levelSize = q.size(); // Количество узлов на текущем уровне
  11. TreeNode* prev = nullptr;
  12.  
  13. for (int i = 0; i < levelSize; ++i) {
  14. TreeNode* current = q.front();
  15. q.pop();
  16.  
  17. // Связываем предыдущий узел с текущим
  18. if (prev) {
  19. prev->next = current;
  20. }
  21. prev = current;
  22.  
  23. // Добавляем дочерние узлы в очередь
  24. if (current->left) q.push(current->left);
  25. if (current->right) q.push(current->right);
  26. }
  27.  
  28. // Последний узел уровня указывает на nullptr
  29. if (prev) {
  30. prev->next = nullptr;
  31. }
  32. }
  33. }
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement