class test
{
	public static void main(String[] args)
	{
		TreeCell t = new TreeCell(new Integer(5));
		t.setLeft(new TreeCell(new Integer(3),null,null));
		t.setRight(new TreeCell(new Integer(5),null,null));

		System.out.println("instancesOf");
		System.out.println(test.instancesOf(t, new Integer(5)));

		test.insert(t,new Integer(5));
		System.out.println(test.instancesOf(t, new Integer(5)));
	}

	public static int instancesOf(TreeCell t, Object o)
	{
		if (t == null)		// base case
			return 0;
		else
		{
			if (t.getDatum().equals(o))
				return 1 + instancesOf(t.getLeft(), o) + instancesOf(t.getRight(), o);
			else
				return instancesOf(t.getLeft(), o) + instancesOf(t.getRight(), o);
		}
	}

	public static void insert(TreeCell t, Object o)
	{
		if (((Integer)t.getDatum()).compareTo(o) > 0)		// our object is "less than" t's object
		{	
			if (t.getLeft() == null)		// no child here, so insert (base case)
				t.setLeft(new TreeCell(o));
			else
				insert(t.getLeft(), o);		// child, so continue in left subtree
		}
		else
		{
			if (t.getRight() == null)		// no child here, so insert (base case)
				t.setRight(new TreeCell(o));
			else
				insert(t.getRight(), o);	// child, so continue in right subtree
		}
	}
}