public static BTNode Insert(BTNode root, int value) {

    BTNode NewNode = new BTNode(value);
    // System.out.print(value);

    if (root == null) {
      root = NewNode;
      return root;
    }

    Queue<BTNode> q = new LinkedList<BTNode>();
    q.offer(root);
    BTNode current = null;
    System.out.println("root: " + root.getData() + " ");

    while (!q.isEmpty()) {
      current = q.poll();
      System.out.print(current.getData() + " ");

      if (current.getLeft() == null) {
        current.setLeft(NewNode);
        return root;
      } else {
        q.offer(current.getLeft());
      }

      if (current.getRight() == null) {
        current.setRight(NewNode);
        return root;
      } else {
        q.offer(current.getRight());
      }
    }
    return root;
  }