Ранее я спрашивал, как получить предварительный порядок дерева, когда мне дается только обход после заказа. Однако теперь мне любопытно, как можно было бы построить строгое двоичное дерево (строгое двоичное дерево, означающее, что узел либо имеет двух дочерних элементов, либо не имеет дочерних элементов), если только задан обход по порядку. Некоторые примеры данных, с которыми я имею дело:
7 8 2 // 8,2 are dimensions stored in the node, likewise for other nodes)
6 4 8
3 1 5
A
B
Я знаю, как должно выглядеть дерево:
B
/ \
7 A
/ \
6 3
Но я не понимаю, как написать функцию, которая фактически построила бы это дерево (и сохранила бы информацию в узлах) из предоставленной информации (обход после заказа). Как я могу это сделать?