c_cpp 116.在每个节点中填充下一个右指针 - DifficultyMedium - 2018.9.12

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 116.在每个节点中填充下一个右指针 - DifficultyMedium - 2018.9.12相关的知识,希望对你有一定的参考价值。

/**
 * 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) {
            return;
        }
        // 每一行的起点
        TreeLinkNode *entryNode = root;
        // 当前处理节点
        TreeLinkNode *curNode = root;
        while (1) {
            if (!curNode->left || !curNode->right) {
                break;
            }
            curNode->left->next = curNode->right;
            if (curNode->next) {
                // 链接两个不同父节点之间的子节点
                curNode->right->next = curNode->next->left;
                curNode = curNode->next;
                continue;
            }
            if (!(entryNode->left)) {
                break;
            }
            entryNode = entryNode->left;
            curNode = entryNode;
        }
    }
};  

/**
 * 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) {
        TreeLinkNode *now, *tail, *head;
        now = root;
        head = tail = NULL;
        while(now) {
            if (now->left)
                if (tail) tail = tail->next =now->left;
                else head = tail = now->left;
            if (now->right)
                if (tail) tail = tail->next =now->right;
                else head = tail = now->right;
            if(!(now = now->next)) {
                now = head;
                head = tail=NULL;
            }
        }
    }
};

以上是关于c_cpp 116.在每个节点中填充下一个右指针 - DifficultyMedium - 2018.9.12的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 117.在每个节点中填充下一个右指针II - DifficultyMedium - 2018.9.12

116. 填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针

java 116.在每个Node.java中填充下一个右指针

java 116.在每个Node.java中填充下一个右指针

java 116.在每个Node.java中填充下一个右指针