Without reading too much, I'll point out that I have working iterator code for Tree-walking in PRE_ORDER, POST_ORDER, and LEVEL_ORDER in Tree::Fast. Feel free to crib as much as you want.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?