Есть исходная задача, решаем её, получаем решение и записываем его в корень дерева. После этого к текущую задачу разбиваем на две подзадачи, добавляя к ней по одному условию(условия различны). Получаем две подзадачи - два новых узла. Каждый узел разбивается таким же образом на еще два, в каждом из которых по одной подзадаче, получившейся из предыдущей подзадачи. И так далее.
Как строится, например, дерево поиска я представляю - но там каждый раз мы по условию идем от начала дерева в поиске нужного нам узла, к которому надо прикрепить очередной узел - а тут всё получается прямо на ходу должно строиться.
В общем в мыслях всё просто и понятно, но в реализации запутался. Подскажите идею.
записывайте текущее значение на возврате из рекурсии: зашли в узел дерева, запустили "левую" подзадачу, запустили "правую", вычислили результат и записали в текущий узел. То есть спускаясь вы задачи решаете путем декомпозиции, а на обратном пути записываете результаты, строя дерево.