Дана строка str, которая содержит троичное выражение, которое может быть вложенным. Задача — преобразовать данное троичное выражение в двоичное дерево и вернуть корень.
Примеры:
Input: str = "a?b:c" Output: a b c a / \ b c The preorder traversal of the above tree is a b c. Input: str = "a?b?c:d:e" Output: a b c d e a / \ b e / \ c d
Подход: это стековый подход к данной проблеме. Поскольку троичный оператор имеет ассоциативность справа налево, строка может быть пройдена справа налево. Возьмите буквы одну за другой, пропуская буквы ? и ':', поскольку эти буквы используются для определения того, будет ли текущая буква (алфавит [от a до z]) помещаться в стек или использоваться для извлечения двух верхних элементов из вершины стека, чтобы сделать их дочерними элементами текущая буква, которая затем сама помещается в стек. Это формирует дерево снизу вверх, и последний оставшийся элемент в стеке после обработки всей строки является корнем дерева.
Ниже приведена реализация вышеуказанного подхода:
|
Выход:
a b c d e
Сложность времени: O (n)
Рекомендуемые посты:
- Преобразовать троичное выражение в двоичное дерево
- Минимальный своп, необходимый для преобразования двоичного дерева в двоичное дерево поиска
- Преобразовать двоичное дерево в двоичное дерево с резьбой | Установите 1 (используя очередь)
- Преобразовать двоичное дерево в двоичное дерево с резьбой | Набор 2 (Эффективный)
- Преобразовать произвольное двоичное дерево в дерево, которое содержит свойство Children Sum
- Преобразовать данное двоичное дерево в дерево, которое содержит свойство логического ИЛИ
- Преобразовать данное двоичное дерево в дерево, которое содержит свойство Logical AND
- Преобразуйте бинарное дерево в его зеркальное дерево
- Обращение по порядку в двоичном дереве без рекурсии и без стека
- Обратные альтернативные уровни идеального бинарного дерева с использованием стека
- Вывести листовые узлы в двоичном дереве слева направо, используя один стек
- Порядок бинарного обхода дерева без резьбы без рекурсии или стека
- Преобразовать лево-правое представление двоичного дерева в нисходящее
- Найти максимальный и минимальный элемент в двоичном дереве без использования рекурсии, стека или очереди
- Преобразовать данное двоичное дерево в двусвязный список | Набор 3
0.00 (0%) 0 votes