5 weird (but useful) data structures in computer science