package lab03;

class Tree {
	Tree left;
	Tree right;
	int value;

	public Tree(int... values) {
		if (values.length==0) throw new IllegalArgumentException("Tree creator must have at least one value argument.");
		value=values[0];
		for(int i=1;i<values.length;i++) {
			insert(values[i]);
		}
	}

	void insert(int newval) {
		if (newval < value) {
			if (left!=null) left.insert(newval);
			else left=new Tree(newval);
		} else {
			if (right!=null) right.insert(newval);
			else right = new Tree(newval);
		}
	}

	public String toString() {
		String answer="";
		if (left!=null) answer += left.toString() + ", ";
		answer += value;
		if (right!=null) answer += ", " + right.toString();
		return answer;
	}

	void print() {
		print("","","");
	}

	void print(String lpref,String pref,String rpref) {
		String newlpref  =lpref+"    ";
		String newlprefb=lpref+"   |";
		String newrpref  =rpref+"    ";
		String newrprefb=rpref+"   |";
		if (left!=null) left.print(newlpref,newlpref,newlprefb);
		String suffix="--+";
		String cpref=pref;
		if (pref.length()>1) cpref=pref.substring(0,pref.length()-1);
		else suffix="-+";
		if (left==null && right==null) { suffix=""; }
		System.out.println(cpref + String.format("%02d",value) + suffix);
		if (right!=null) right.print(newrprefb,newrpref,newrpref);
	}

}