Имеется массив pre [], представляющий обход Preorder пространственного двоичного дерева, в котором каждый узел имеет 0 или 2 дочерних элемента. Дан еще один массив preLN [], который имеет только два возможных значения: L и N. Значение 'L' в 'preLN []' указывает, что соответствующий узел в двоичном дереве является листовым узлом, а значение 'N' указывает, что соответствующий узел является неконцевым узлом. Напишите функцию для построения дерева из заданных двух массивов.
Пример:
Input: pre[] = {10, 30, 20, 5, 15}, preLN[] = {'N', 'N', 'L', 'L', 'L'} Output: Root of following tree 10 / \ 30 15 / \ 20 5
Первый элемент в pre [] всегда будет корневым. Таким образом, мы можем легко определить корень. Если левое поддерево пусто, правое поддерево также должно быть пустым, и запись preLN [] для root должна быть 'L'. Мы можем просто создать узел и вернуть его. Если левое и правое поддеревья не пусты, то рекурсивно вызывайте левое и правое поддеревья и связывайте возвращенные узлы с корнем.
|
Джава
|
python3
|
C #
|
Выход:
Following is Inorder Traversal of the Constructed Binary Tree: 20 30 5 10 15
Сложность времени: O (n)
Построить полное k-арное дерево из его обхода по предзаказу
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Создайте полное двоичное дерево, используя его обход по предзаказу и обход по предзаказу из своего зеркального дерева
- Построить полное k-арное дерево из его обхода по предзаказу
- Построить специальное двоичное дерево из заданного обхода Inorder
- Построить BST из заданного обхода предзаказа | Набор 2
- Построить дерево из заданных обходов Inorder и Preorder
- Построить полное бинарное дерево из заданных обходов по предзаказу и после заказа
- Итеративный обход предзаказа N-арного дерева
- Предзаказ обхода N-арного дерева без рекурсии
- Найти n-й узел в обходе предзаказа двоичного дерева
- Измените бинарное дерево, чтобы получить обход предзаказа, используя только правильные указатели
- Проверьте, может ли данный массив представлять предварительный обход дерева двоичного поиска
- Если вам даны две последовательности обхода, можете ли вы построить двоичное дерево?
- Создайте корневое дерево, используя время начала и окончания его обхода DFS
- Итеративный обход предзаказа
- Обход Морриса для Предзаказа
0.00 (0%) 0 votes