void connect(TreeLinkNode *root) {
    if(!root) return;
    queue<TreeLinkNode*> myQueue;
    
    myQueue.push(root);
    myQueue.push(NULL);
    
    while(!myQueue.empty()){
        TreeLinkNode* node = myQueue.front();
        myQueue.pop();
        if(node){
            TreeLinkNode* n = myQueue.front();
            node->next = n;
            if(node->left)  myQueue.push(node->left);
            if(node->right) myQueue.push(node->right);
        }
        else
            if(!myQueue.empty())
                myQueue.push(NULL);
    }
}