Тестовое задание для Пхп программиста

Вот задание для соискателя:

Есть текстовый файл, в котором находится описание дерева в следующем виде:
node_id|parent_id|node_name
parent_id – id родителя, если оно равно 0 – это корневой узел.

Задача: отобразить этот файл в виде дерева, с отступами для каждого уровня табуляциями (первый уровень – ноль табуляций, второй уровень – одна, и т.д.).
Файл-пример содержит:
1|0|Electronics
2|0|Video
3|0|Photo
4|1|MP3 player
5|1|TV
6|4|iPod
7|6|Shuffle
8|3|SLR
9|8|DSLR
10|9|Nikon
11|9|Canon
12|11|20D

Важные моменты по заданию: выполнить его надо без лишних итераций, не стОит показывать всё что вы знаете в php, лучше сделайте код оптимальным. Код должен быть читаемым. При решении задания довольно часто делается типичная ошибка – создается линейный массив, который затем отображается
рекурсивно путем многократного полного перебора элементов. Все решения, основанные на данном принципе будут считаться неудовлетворительными. Сформируйте в памяти такую структуру данных, для вывода которой не приходилось бы просматривать один элемент больше одного раза.

Связаться со мной по ICQ 13663943 или письмом на dp76pocet[тут собака]gmail.com и прислать выполненный код. Дальнейшая судьба каждого кандидата – индивидуально.
Удачи.