/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {} * }; */ class Solution { public: void connect(TreeLinkNode* root) { if (root == nullptr) return; vector<TreeLinkNode*> arr; arr.insert(arr.begin(), root); while (!arr.empty()) { int n = arr.size(); for (int i = 0; i < n - 1; i++) { arr[i]->next = arr[i + 1]; } arr[n - 1]->next = nullptr; for (int i = 0; i < n; i++) { TreeLinkNode* node = *arr.begin(); arr.erase(arr.begin()); if (node->left) arr.push_back(node->left); if (node->right) arr.push_back(node->right); } } } };