In my class we are dealing with Binary Tree's and Recursive methods which call themselves. However, I'm having trouble following the methods.

public class BinaryTree{
 
 
private class Node
{
 
  private Node left;
  private Node right;
  private IntElement element;
  private Node root = null;
 
  /**
   * Creates an empty node.
   */
  public Node()
  {
    element = null;
    right = null;
    left = null;
 
  }
 
 
  public Node (IntElement elem)
  {
  	left = null;
    right = null;
    element = elem;
  }
 
  public Node (IntElement elem, Node left, Node right){
  	element = elem;
  	this.right = right;
  	this.left = left;
  }
 
 
  public Node getLeft()
  {
    return left;
  }
 
 
  public void setLeft (Node n)
  {
    left = n;
  }
 
  public Node getRight(){
  	return right;
  }
 
  public void setRight(Node n){
  	right = n;
  }
 
 
  public IntElement getElement()
  {
    return element;
  }
 
 
  public void setElement (IntElement elem)
  {
    element = elem;
  }
 
}
 
 
public void inOrderTraversal(Node tree){
 
	if(tree != null){
		inOrderTraversal(tree.left);
		System.out.println(tree.element + " "); //root IN between
		inOrderTraversal(tree.right);
	}
 
}
 
    public void postOrderTraversal(Node tree)
    {
         if (tree != null)
         {
              postOrderTraversal(tree.left);
              postOrderTraversal(tree.right);
              System.out.print(tree.element + "  ");  // root last
         }
    }
 
    public void preOrderTraversal(Node tree){
    	if(tree != null){
 
          System.out.print(tree.element + "  ");  // root first
          preOrderTraversal(tree.left);
          preOrderTraversal(tree.right);
 
 
    	}
    }
 
}

Take inOrderTraversal method for example. It was given to me but I dont understand what's going on. If a node called tree, has a left and a right node attached, it's deemed not null hence the if statement is executed. The first line is that is calls itself but replaces the tree, with the tree's left attached node. Once it has called itself with the left node... when does it continue down to the println?? I'm having trouble understanding the order of operation. Also, is the "head of the tree" aka tree, supposed to have an element? What if tree had a left and right node, but element = null, will that cause the if statement to not execute? Thank you!