I'm trying to insert a Binary Node. My code is convoluted and there's no hope of rescuing it so I plan to rewrite it (basically I didn't account for backtracking and didn't think about the algorithm all that closely).

I'm trying to insert a Binary Node using in order traversal, but I don't understand how I'm supposed to backtrack. 

```
     D
    / \
   B   E 
  / \ / \
 A  C F 

```

How would I search through the left subtree of root D and then go back and search through the right one? It might be a stupid question, but I'm stumped. The best I can come up with is something like this:

```
 if (!root.hasLeftChild) {
      root = root.getLeftChild(); 
      recurse(root); 
 } 

```

But when I reach the bottom, I can't go back up with the root. Also, it doesn't solve the problem where if I reach the bottom left node I have to fill up both children of that node before starting to backtrack. 

I think I'm thinking about this the wrong way.