preorder_vals — прямой обход: сначала вершина, затем её левое поддерево, затем правое;
- inorder_vals — симметричный обход: левое поддерево, затем вершина, затем правое поддерево.
Восстановите дерево и верните его корень. Гарантируется, что оба списка получены из одного и того же дерева.preorder_vals=[5, 3, 1, 4, 8], inorder_vals=[1, 3, 4, 5, 8] → [5, 3, 8, 1, 4]
Первый в прямом обходе — 5, это корень. В симметричном слева от 5 стоят [1, 3, 4], справа [8]. Левое поддерево начинается с 3 (следующий в прямом обходе), у него дети 1 и 4.
preorder_vals=[10, 20, 30], inorder_vals=[30, 20, 10] → [10, 20, None, 30]
Каждая следующая вершина стоит в симметричном обходе левее предыдущей — цепочка влево: 10 → 20 → 30.
preorder_vals=[0], inorder_vals=[0] → [0]
preorder_vals=[5, 3, 1, 4, 8], inorder_vals=[1, 3, 4, 5, 8]
[5, 3, 8, 1, 4]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 64 теста на сервере, включая скрытые.