Next Pointer Binary Tree

/**
 * 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) {}
 * };
 */
void Solution::connect(TreeLinkNode* A) {
    if(!A || !A->left) 
        return;
        
    for(TreeLinkNode *parentStart = A; parentStart && parentStart->left; parentStart = parentStart->left) {
        TreeLinkNode *parent = parentStart;
        while(parent) {
            parent->left->next = parent->right;
            if(!parent->next) break;
            parent->right->next = parent->next->left;
            parent = parent->right;
        }
    }
}

Last updated