Александр Маджугин, я имел ввиду этот листинг.
Линейный - это когда в худшем случае количество любых смещений при переборе элементов списка не превышает количества элементов этого списка. Здесь - требуется смещений больше, чем элементов в списке (кмк).
Дмитрий, явное наличие умысла владельца сайта для дальнейшего поиска пиратского контента посредством подобного списка пользователями сайта.
Этого достаточно.
Дмитрий, любой список (названия, хеши, линки, и т.д.) - это уже обмен информацией с аудиторией с целью умышленного распространения пиратского контента.
Евгений, нужное число делим пополам и округляем вверх - это root.
Потом - слева направо заполняем по 2 ветки составными числами родительского узла.
Затем - обходим дерево и готово.