Thanks for the reply Bruce...
In the case of this project, the tree is really to sit on the left side of a web page so the user can select a filter criteria for a Google Map that will be displayed on the right hand side.
Could also be useful as a filtering tool for a browse sitting beside it I guess.
In my case, the tree would be things like 'Accommodation', 'Restaurants' etc., and when the user selected 'Accommodation', they would be shown a sub list of 'Hotels', 'B&Bs', 'Campsites' etc. from which they can select one or more. The can also select 'Accommodation' itself, which would auto select the children of that node too.
It would be great if the selection in the tree could populate a session variable or queue so that another control on the page (e.g. a Google Map or NetWebBrowse) could refresh itself based on the criteria. Would be nice if the tree itself can be populated from a database where the site owner could allocate new parent/child relationships (e.g. if they want to add another Accommodation category later on).