LeetCode OJ-- Populating Next Right Pointers in Each Node

https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node/

二叉树遍历的变种:树的节点多了个next指针。

首先想到肯定和树的遍历有关:先根、中根、后根都不可以。。。

观察找规律,如果当前节点是它根的 left,则它的next就是它根的 right。

如果当前节点是它根的right,则它的next 就是 它根的next的left,如果它根的 next 存在的话。

/**
 * 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 == NULL)
            return;
        root->next = NULL;
        
        visit(root);
    }
    void visit(TreeLinkNode *root)
    {
        if(root->left)
        {
            root->left->next = root->right;
            root->right->next = (root->next ? root->next->left:NULL);
            visit(root->left);
            visit(root->right);
        }
    }
};
原文地址:https://www.cnblogs.com/qingcheng/p/3870587.html