Smittyperm: я не столь близок с Java-миром, не могли бы вы дать что-то почитать по поводу screen? Гугол ожидаемо выдает ерунду. Подозреваю, что речь о неком веб-фреймворке, умеющем пробрасывать консоль в веб-интерфейс.
Pavel K: вы представляете, что при каждом вызове вашей гипотетической функции с рекурсивным вызовом будет инстанцироваться новая реализация? Это как, круто-модно-молодежно?
А в чем проблема? Обходы у вас делаются, т.е. алгоритм есть. Для 1-3 нужно просто высунуть наружу итератор (указатель на узел, обернутый в класс с нужными операциями). В нем определить операции получения одного из следующих узлов и родительского.