root двоичного дерева поиска: в каждой вершине все значения левого поддерева меньше её значения, а правого — больше. Дерево могло вырасти кривым, например вытянуться в длинную цепочку.
Постройте из тех же значений новое дерево поиска минимальной высоты по такому правилу:
1. Выпишите все значения по возрастанию.
2. Корнем становится средний элемент этого списка. Если элементов чётное число и средних два, берётся левый из них.
3. Элементы левее выбранного тем же способом образуют левое поддерево, элементы правее — правое.
Верните корень нового дерева.root=tree_node([10, None, 20, None, 30, None, 40, None, 50]) → [30, 10, 40, None, 20, None, 50]
Значения по возрастанию: 10, 20, 30, 40, 50. Корень — средний элемент 30, слева из 10 и 20 корнем становится левый средний 10, справа из 40 и 50 — 40.
root=tree_node([7, 3, None, 1, 5]) → [3, 1, 5, None, None, None, 7]
Значения по возрастанию: 1, 3, 5, 7. Средних два — 3 и 5, корнем становится левый из них, 3.
root=tree_node([4]) → [4]
Node.val ≤ 10⁵root — корректное дерево поискаroot=tree_node([10, None, 20, None, 30, None, 40, None, 50])
[30, 10, 40, None, 20, None, 50]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 27 тестов на сервере, включая скрытые.