Ctrl K

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

Средняя
Двоичное дерево записано строкой text по такому правилу: сначала целое число — значение вершины (может быть отрицательным), затем ноль, одна или две пары круглых скобок. Внутри каждой пары тем же способом записано поддерево. Первая пара скобок — всегда левое поддерево, вторая — правое. Если пара всего одна, у вершины есть только левый ребёнок. Пара может быть пустой — () означает, что поддерева нет; так записывают вершину только с правым ребёнком: 5()(9). Постройте дерево и верните его корень. Пустая строка обозначает пустое дерево.
Пример 1
text="7(3(1)(5))(-2(8))" → [7, 3, -2, 1, 5, 8]

Корень 7. Первая пара скобок — левое поддерево: 3 с детьми 1 и 5. Вторая — правое: -2, у которой одна пара скобок, значит 8 — её левый ребёнок.

Пример 2
text="12(4)" → [12, 4]

Одна пара скобок — у корня только левый ребёнок.

Пример 3
text="" → None

Пустая строка — пустое дерево.

Ограничения
  • 0 ≤ len(text) ≤ 3 · 10⁴
  • text состоит из цифр, (, ) и - и записан по правилу выше
  • |значение вершины| ≤ 2³⁰
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево в правую цепочку СредняяЗапись дерева с решётками СредняяДерево в скобочной записи СредняяНаименьшее слово от листа к корню СредняяПара из двух деревьев поиска Средняя
загружаем Python…
Вход
text="7(3(1)(5))(-2(8))"
Ожидается
[7, 3, -2, 1, 5, 8]

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