У меня есть список узлов в предзаказе, который мне нужно превратить в дерево.У меня есть несколько гарантий относительно результирующего дерева.
- Это полное двоичное дерево , означающее, что у каждого узла будет 0 или 2 дочерних элемента.
- Независимо от того,не узел является листом или ветвь содержится в списке предварительного заказа.
Я уверен, что дерево может быть создано, пока соблюдены два вышеуказанных ограничения.
Примерсписка узлов в предзаказе может быть:
Branch(1), Branch(2), Leaf(3), Branch(4), Leaf(5), Leaf(6), Branch(7)
Результирующее дерево:
1
/ \
2 7
/ \
3 4
/ \
5 6
Нет другого дерева, о котором я могу думать, которое могло бы быть построено из приведенного выше списка предзаказа..
Я пробовал несколько разных подходов (в основном со стеками и очередями), но последние несколько часов я потратил на это и не смог заставить что-либо работать.
Я бы предпочел решения на Rust, но приветствуются подсказки или решения на C, C ++, Python, Java или даже просто псевдокоде.