не легко.Вы хотите в качестве выходного значения [0 [1 2]]
, но это значение никогда не посещалось.Таким образом, вы не можете получить его, просто взглянув на любой ранее посещенный узел.Вместо этого вам придется самостоятельно найти способ создания этой структуры на основе изучения истории посетителя.
Это не кажется невозможным, но алгоритм не совсем очевиден.Мое первое возражение состоит в том, что проблема, по-видимому, плохо определена: действительно ли вы хотите, чтобы «уже посещенный набор» равнялся shrink при посещении?Вы говорите, что при посещении [1 2]
вы рассматриваете уже посещенную часть как [0 [1 2]]
, подразумевая, что, глядя на вектор [1 2]
, вы считаете, что все его содержимое уже посещено.В этом случае, когда вы смотрите на корень, все дерево уже посещено, и когда вы спускаетесь в него, оно становится все менее и менее посещаемым!
Так что я бы предложил сгладить более точное определениео том, что вы хотите, и, надеюсь, если вы будете достаточно строгими, алгоритм предложит себя.