1
/ \
2 3
/\ /\
4 5 6 7 root random root->right random->left root random
1 -> NULL 1 NULL
/ \
2 -> 3 -> NULL 2 3 3 NULL
/\ /\
4->5 ->6 ->7 -> NULL 4 5 5 6 6 7
NULL NULL NULL NULL
/**/
/**
* * 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 ;
}
connect_node(root,NULL);
}
void connect_node(TreeLinkNode *root,TreeLinkNode *random)
{
if(root == NULL)
{
return ;
}
root->next = random; /*连接指针*/
connect_node(root->left,root->right); /*向下走一层*/
if(random)
{
connect_node(root->right,random->left); /*递归到底层后,连接root->right和random->left -> \ /*/
}
else
{
connect_node(root->right,NULL);
}
}
};