/**
* 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;
TreeLinkNode* parent = root;
connect(parent->left, root);
connect(parent->right, root);
}
void connect(TreeLinkNode *cur, TreeLinkNode *parent) {
if (cur == NULL) return;
if (parent->left == cur) {
cur->next = parent->right;
} else {
if (parent->next != NULL) {
cur->next = parent->next->left;
}
}
connect(cur->left, cur);
connect(cur->right, cur);
}
};