If the issue is actually around Cities, States, Countries, then you may want to take a look at REEgion Select, a third party add-on by @Derek Hogue who answers a number of questions here.
If your issue is really more about being able to base one field of the selection of another, than take a look at Query Field. I haven't used it, yet, but do have a project that I've been looking at it for.
Though for your final display issue, I think you may want to either use a filtering system, like Isotope—a javascript filtering method, a tagging system, either Solspace Tag or DevDemon's Tagger. Obviously you could use custom queries as well, but I think one of the above maybe an easier approach. Tagger is free and if you don't need all the features of Solspace's module is a nice way to go.
For Treeview itself, there is no specific add-on or fieldtype that I've heard of, but I'd assume mainly because Treeview is about clustering or hierarchical data. Generally speaking, hierarchical groupings have been category based, meaning you create your list and sublist and subsets of data manually and kind of hope things don't change to much. You can still do this with a combination of categories, subcategories, tags/keywords, and maybe add some javascript.
Distributive classification, tagging, can be more flexible and responsive to your needs, while still allowing for flexible filtering of data. In terms of data entry, I think tags are probably easier, or a mixture of tags and categories (unless you are literally dealing with locations*).
If you are actually dealing with locations, than I'd recommend something that does assistive auto-completes. Like just allow the user to enter a postal code, then recommend city, state, region, country from that, but allow them to be modifiable.