Since it involves nodes, then you could probably use a binary search tree. If you know how the algorithm works and everything you might not have too many problems, but this program will still be very tuff.
If I had further advice/code snippets/suggestions I would give them to you, but I don't.
In the meantime, here's a few links that might help:
Well, it depends on how you would use it. If you could find a good way to implement it, then I would go for it. HashMaps use values and keys assosiated with those values. So you would need to have something for the values and something for the keys.