# Populating Next Right Pointers in Each Node

#1

Given a binary tree

```struct TreeLinkNode {
}
```

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to `NULL`.

Initially, all next pointers are set to `NULL`.

Note:

• You may only use constant extra space.
• Recursive approach is fine, implicit stack space does not count as extra space for this problem.
• You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).

Example:

Given the following perfect binary tree,

```     1
/  \
2    3
/ \  / \
4  5  6  7
```

After calling your function, the tree should look like:

```     1 -> NULL
/  \
2 -> 3 -> NULL
/ \  / \
4->5->6->7 -> NULL
```

#2

We can recursively set `left.next=right`. The only trick here is to also link `left node's right to right node's left`.

``````/**
* Definition for binary tree with next pointer.
*     int val;
*     TreeLinkNode(int x) { val = x; }
* }
*/
public class Solution {
if(root==null){
return;
}
helper(root.left, root.right);
}

if(left==null && right==null){ return; }
left.next = right;
helper(left.left, left.right);
helper(right.left, right.right);
helper(left.right, right.left);
}
}
``````