Finally got a chance to come back to this and answer my own question. I had completely misunderstood the data model when I asked the original question but after reading the nested sets stuff here
http://www.intelligententerprise.com/001020/celko.jhtml?_requestid=49180 it all started making sense.
So trees are not categories. However a branch of a tree comprised of some categories is sometimes referred to as a subtree with one category as the root, but this does not make it a tree.
Once I had that clarified it made my 2nd question very straight forward to answer - I used CATEGORY_OBJECT_MAP to map my objects to multiple categories. There is a beautiful API there for doing this. Worked very nicely - I enjoyed my introduction to categories.
Hope this is useful to somebody else someday.
Brian