/*
 * $ java-introcs RandomOps 888 127 | java-introcs PlainBSTClient
 * $ java-introcs RandomOps 888 127 2000 | java-introcs PlainBSTClient
 * $ java-introcs RandomOps 888 127 -2000 | java-introcs PlainBSTClient
 */

public class PlainBSTClient
{
    public static void main(String[] args)
    {
	BSTDraw<Integer, Integer> st = new BSTDraw<>();

	st.drawPrepare(800);
	StdDraw.enableDoubleBuffering();	
	while (!StdIn.isEmpty()) {
	    int x = StdIn.readInt();
	    if (x > 0)
		st.put(x, 0);
	    else
		st.delete(-x);
	    st.draw(.95, .003, .004);
	    StdDraw.setPenColor(StdDraw.BLACK);
	    int N = st.size();
	    StdDraw.textLeft(0.02, 0.33, "N = " + N);
	    StdDraw.textLeft(0.02, 0.28, "");
	    StdDraw.textLeft(0.02, 0.23,
			     String.format("Plain height = %d  (best possible = %d)",
					   st.height(), RBBSTDraw.lgfloor(N)
					   ));
	    int ipl = st.iplP();
	    StdDraw.textLeft(0.02, 0.18, "IPL = " + ipl);
	    StdDraw.textLeft(0.02, 0.13,
			     String.format("Average depth = %.4f  (best possible = %.4f)",
					   (double)ipl / N,
					   (double)RBBSTDraw.bestIPL(N) / N
					   ));
	    StdDraw.textLeft(0.02, 0.08, "");
	    StdDraw.show();
	    StdDraw.pause(100);		
	}
    }
}
