Gibt es nicht sowas wie Folgendes?
- node.nextSibling (in den nächsten Knoten gleicher Ebene, aka Childs überspriongen)
- node.firstChild (in die Childs rein, natürlich nur, wenn's Welche gibt)
- node.next (in den nächsten Knoten rein)
Nja, nun mußt du dir nur noch raussuchen, was du als nächstes haben willst.
Wenn node.level <> 1. Ebene oder wenn Flag nicht gesetzt, dann immer node.next, ansonsten (wenn node.level = 1. Ebene und Flag gesetzt)
node.nextSibling und wenn das NIL ist, dann node.lastChild.next, aber wenn node.lastChild = nil, dann node.next