/** * 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; deque<TreeLinkNode*> dq; dq.push_front(root); while(!dq.empty()){ int n=dq.size(); for(int i=0;i<n;i++){ TreeLinkNode* node=dq.front(); dq.pop_front(); if(i<n-1){ node->next=dq.front(); } else{ node->next=nullptr; } if(node->left) dq.push_back(node->left); if(node->right) dq.push_back(node->right); } } } };