Мой любимый вид деревьев — когда они в уже собранном виде, конечно это не отменяет необходимости сохранять parent_id на всякий пожарный, но факт остаётся фактом, чем каждый раз собирать дерево, проще один раз записать полный путь сообщения, который оно проходит в треде, а затем через WHERE path LIKE id || "." || %
сделать выборку всех сообщений всего одним SQL-запросом, чтобы вывести нужную нить дискуссии.
Но мало сделать выборку из БД, нужно ещё это дело как-то нарисовать, на помощь приходит CSS, чтобы оформить дочерние сообщения: чтобы было понятно, какое сообщение на какое отвечает.
Пример работы: http://spfng.com/threading.php
Исходный кот: http://spfng.com/threading.php.html
Исходный кот (резервный кот): http://paste.org.ru/?qanvq1
Надеюсь это поможет новичкам реализовать древовидные комментарии в своих проектах.