Ctrl K

Дерево в скобочной записи

Средняя
Дан корень root двоичного дерева. Запишите дерево одной строкой по таким правилам (обход «узел, левое поддерево, правое поддерево»): - узел записывается своим значением; - если у узла есть дети, после значения идёт запись левого поддерева в скобках, а затем — правого поддерева в скобках; - пустые пары скобок () опускаются, кроме одного случая: если левого ребёнка нет, а правый есть, пустая пара () на месте левого обязательна — иначе правого ребёнка нельзя было бы отличить от левого. Таким образом, у листа скобок нет совсем, а у узла только с левым ребёнком — одна пара.
Пример 1
root=tree_node([7, -2, 5, None, None, 1]) → '7(-2)(5(1))'

У -2 детей нет — записываем просто -2. У 5 есть только левый ребёнок, поэтому пишем 5(1) без пустых скобок справа. Итог: 7(-2)(5(1)).

Пример 2
root=tree_node([4, None, 9, 8]) → '4()(9(8))'

У 4 нет левого ребёнка, но есть правый, поэтому нужна пустая пара (): 4()(9(8)).

Пример 3
root=tree_node([3]) → '3'
Ограничения
  • Число узлов от 1 до 10⁴
  • -1000 ≤ значение узла ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево из скобочной записи СредняяНаименьшее слово от листа к корню СредняяМаршрут по дереву СредняяВсе пути от корня до листьев ЛёгкаяДерево по записи с чёрточками Сложная
загружаем Python…
Вход
root=tree_node([7, -2, 5, None, None, 1])
Ожидается
'7(-2)(5(1))'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 110 тестов на сервере, включая скрытые.