title: Creating a binary search tree in java. But output is null
body: <p>I am trying to create a rudimentary binary search tree in java with an insert and traverse method. The nodes have two local variables, a string and an int, the String value is used to sort the nodes. </p>
  
  <p>Each BST has a local variable pointer to the root node and the nodes are inserted by traversing from the node. There seems to be a problem in creating the root node as my output is consistently producing null instead of.</p>
  
  <p>THE 
  CAT 
  HAT</p>
  
  <pre><code>class BST
  {
      public Node root = null;
  
      private class Node 
      {
          private String key;
          private int value;
          private Node left;
          private Node right;
  
          public Node ()
          {
  
          }
  
          public Node (String key, int value)
          {
              this.key = key;
              this.value = value;
          }
  
          public String toString ()
          {
              return ("The key is: "+ this.key +" "+ this.value);
          }
      }
  
      BST ()
      {
      }
  
  
      public void put (String key, int value)
      {
          put (root, key, value);
      }
  
      private void put (Node x, String key, int value)
      {
          Node newNode = new Node(key, value);
  
          if (x == null)
          {
              x = newNode;
              System.out.println("new node added");
              System.out.println(x);
          }
  
          int cmp = key.compareTo(x.key);
  
          if (cmp &lt; 0)
              put(x.left, key, value);
          else if (cmp &gt; 0)
              put(x.right, key, value);
          else
              x.value = value;
  
      }
  
      public void inorder (Node x)
      {
          if (x != null) 
          {
              inorder (x.left);
              System.out.println(x.key);
              inorder (x.right); 
          }
  
      }
  
      public static void main (String [] args)
      {
          BST bst = new BST();
          bst.put(bst.root,"THE", 1);
          bst.put(bst.root,"CAT", 2);
          bst.put("HAT", 1);
          bst.inorder(bst.root);
  
      }
  }
  </code></pre>