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); } } };