private void drawNode(Node2d node) {
    if (node == null) return;

    StdDraw.setPenColor(StdDraw.BLACK);
    StdDraw.setPenRadius(.005);
    node.p.draw();

    StdDraw.setPenRadius(.003);

    if (node.depth % 2 == 0) {
      StdDraw.setPenColor(StdDraw.RED);
      node.p.drawTo(new Point2D(node.p.x(), node.rect.ymax()));
      node.p.drawTo(new Point2D(node.p.x(), node.rect.ymin()));

      drawNode(node.left);
      drawNode(node.right);
    } else {
      StdDraw.setPenColor(StdDraw.BLUE);
      node.p.drawTo(new Point2D(node.rect.xmax(), node.p.y()));
      node.p.drawTo(new Point2D(node.rect.xmin(), node.p.y()));

      drawNode(node.left);
      drawNode(node.right);
    }
  }
 public void draw() { // draw all of the points to standard draw
   drawNode(root);
 }