Java Data Structure and Algorithm