We present a deterministic distributed depth-first token passing protocol on a rooted network. This protocol uses neither the processor identifiers nor the size of the network, but assumes the existence of a distinguises hed processor, called the root of the network. The protocol is self-stabilizing, meaning that starting from an arbitrary state (in response to an arbitrary perturbation modifying the memory state), it is guaranteed to reach a state with no more than one token in the network. Our protocol implements a fair token circulation scheme, i.e., in every round, every processor obtains the token at least once. The proposed protocol has extremely small state requirement---only 3(\Delta +1) states per processor, i.e., O(log\Delta) bits per processor, where \Delta is the degree of the network. The protocol can be used to implement a fair distributed mutual exclusion in any rooted network. This protocol can also be used to construct a DFS spanning tree