Put the first level of the hierarchy in the leftmost list (which
should use single-selection semantics). When the user selects an
item in it, show that item's children in the next list to the right.
Do the same with the child items in this second list; show its
selected item's children in the third list. And so on.
Once the user reaches items with no children -- the "leaf" items,
as opposed to "branches" -- you might want to show the details of the
last-selected item at the far right. In the Mac Finder example below,
a representation of an image file is shown; you might instead offer a
UI for editing an item, or for reading its content, or whatever is
appropriate for your particular application.
A nice thing about this pattern is that you can easily associate
buttons with each list: delete the current item, move up, move
down, etc. Many toolkits will let you do this in tree controls
via direct manipulation, but for those that don't, this is a
viable alternative. See the examples.