[Leetcode]Populating Next Right Pointers in Each Node II

思路:同Populating Next Right Pointers in Each Node

/**
 * 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) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        while(root != NULL)
        {
            TreeLinkNode *next = NULL;
            TreeLinkNode *prev = NULL;
            TreeLinkNode *cur = root;
            while(cur != NULL)
            {
                if(next == NULL) 
                    next = cur->left ? cur->left : cur->right;
                if(cur->left)
                {
                    if(prev) prev->next = cur->left;
                    prev = cur->left;
                }
                if(cur->right)
                {
                    if(prev) prev->next = cur->right;
                    prev = cur->right;
                }
                cur = cur->next;
            }
            root = next;
        }
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章