In the TCL, iterators can be categorized into two types, element iterators, and node iterators. Element iterators expose the underlying element, while node iterators expose the underlying node.

Although element iterators are considered the primary iterator types in the TCL, node iterators have an important role. Many operations in the standard algoritms work much better when used with node iterators, because they expect the iterators to expose the underlying node rather than the unerlying element. Other standard algoritms work with either the node or element iterators, but will have a different outcome depending on which type is used.

Node iterators can be categorized into three types, just like their element iterator counterparts: child node iterators, reverse node iterators, and descendant node iterators.

All names of all the node iterators are prefixed with 'node', for example, node_iterator, const_node_iterator, and pre_order_node_iterator. The iterator accessors for all node iterators are also prefixed with 'node', for example, node_begin(), node_end(), and post_order_node_begin().