Сергей-4030> Это было бы прикольно, но во-первых - велика вероятность того, что в интернете есть, а во-вторых - больно уж частная задачка, элемент случайности будет слишком велик. Парсер таки лучше в свете конкурса, имхо. Тем более, что Реконструктор изначально полагал, что на Java писать парсеры невозможно.
Я не знаю, есть ли в инете (я не искал), но тут чистой воды алгоритмы и структуры данных. Тут надо не стек, а список или очередь контекстов (ктстати, итераты вполне подходят по контексту) и работать с текущим при копировании — либо пока не дошёл до указанного (по равенству), тогда вернулся на уровень вверх, поставил ссылку и начал работать как обычно (до равентсва или до конца), либо дошёл до конца. Если это первый или последний итератор в списке, то удаляем его. Собственно, удалять можно любой итератор, который доехал до конца. Просто, похоже, что ситуация, когда надо удалить из середины, никогда не возникнет — элемент сверху всегда есть и на нём надо остановится, чтобы передать ссылку вверх. Поэтому такой список будет колапсировать сверху. Т.е. это чисто FIFO очередь, а не стек. Я имею ввиду, если делать тем методом, что я предложил.