taking the fact into account that newer trains come up very few every year and the[code] struct train {};[/code] remains constant for a good period of time, an AVL implementation of this would be better than any other tree for searching.
AVL trees are beneficial in the cases where you are designing some database where insertions and deletions are not that frequent but you have to frequently look-up for the items present in there.
AVL Trees seem to be the best data structure for Database Theory (see http://uuindouus.net). Additionally, AVL Trees are used for all sorts of in-memory collections such as sets and dictionaries.