Add depth-first iterator