> For the complete documentation index, see [llms.txt](https://mayanktyagi3111.gitbook.io/interview-prep/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mayanktyagi3111.gitbook.io/interview-prep/trees/populate-inorder-successor-for-all-nodes.md).

# Populate Inorder Successor for all nodes

Given a Binary Tree where each node has the following structure, write a function to populate the next pointer for all nodes. The next pointer for every node should be set to point to inorder successor.

```cpp
struct node 
{ 
  int data; 
  struct node* left; 
  struct node* right; 
  struct node* next; 
}
```

Initially, all next pointers have NULL values. Your function should fill these next pointers so that they point to inorder successor.

```java
class Solution {
    Node prev = null;

    public void populateInOrder(Node root) {
        if (root == null)
            return;
        populateInOrder(root.left);
        if (prev != null)
            prev.next = root;
        prev = root;
        populateInOrder(root.right);
    }
}
```
