class Solution {
public:
queue<TreeNode*> q;
Node* connect(Node* root) {
if(!root) return root;
auto source=root;
while(root->left){
for(auto q=root;q;q=q->next){
q->left->next=q->right;
if(q->next) q->right->next=q->next->left;
}
root=root->left;
}
return source;
}
};