Timeline
Timeline
2025-10-26
init
Level-order traversal
Problem:
Level-order traversal is sufficient
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /*// Definition for a Node.*/class Node { public: int val; Node *left; Node *right; Node *next; Node() : val(0) , left(NULL) , right(NULL) , next(NULL) { } Node(int _val) : val(_val) , left(NULL) , right(NULL) , next(NULL) { } Node(int _val, Node *_left, Node *_right, Node *_next) : val(_val) , left(_left) , right(_right) , next(_next) { }};using std::queue;class Solution { public: Node *connect(Node *root) { if (root == nullptr) { return root; } // Level-order traversal int i, n; Node *curr, *last; queue<Node *> que; que.push(root); while (!que.empty()) { n = que.size(); last = nullptr; for (i = 0; i < n; i++) { curr = que.front(); que.pop(); if (last != nullptr) last->next = curr; if (curr->left != nullptr) que.push(curr->left); if (curr->right != nullptr) { que.push(curr->right); } last = curr; } curr->next = nullptr; } return root; }}; |
