654. Максимальная Binary Tree
Учитывая целочисленный массив, без дублей. Максимальное дерево здания на этом массиве определяется следующим образом:
- Корень максимальное число в массиве.
- Левое поддерево максимальное дерево строится из левой части подмассива, деленное на максимальное число.
- Правое поддерево максимального дерево строится из правой части подмассива разделенного на максимальном числе.
Построить максимальное дерево с помощью данного массива и вывода корневого узла этого дерева.
-------------------------------------------------- -------------------------------------------------- --------------
Дан массив целых чисел не повторяется. Максимальное дерево определяется на массиве установить следующее:
- Корень максимальное число массива.
- Левое поддерево делится на максимальное число суб-массива, полученного от самого большого дерева слева.
- Право поддерева является крупнейшей древовидной структурой частью права на подрешетки разделенного на максимальном числе.
Через заданного массива дерева конфигурации и максимального выхода корневого узла дерева.
-------------------------------------------------- -------------------------------------------------- --------------
Пример 1:
Входные данные : [3,2,1,6,0,5] Выход: возвращает узел дерева , представляющий корневой следующее дерево: 6 / \ 3 5 \ / 2 0 \ 1
Замечания:
- Размер данного массива будет находиться в диапазоне [1,1000].
Субъект не сложно, легко думать решения:
- Создать корневой узел, который является максимальным значением массива
- Максимальное значение левой половины массива, чтобы создать корневой узел слева, левый узел
- Максимальное значение правой части массива, чтобы создать правильный узел корневого узла, правый узел
- Рекурсивные выше операции
# Определение для бинарного узла дерева. # Класс TreeNode: # Защита __init __ (я, х): # self.val = х # self.left = None # self.right = None класс Решение: Защита constructMaximumBinaryTree (самоповреждения, НУМС: Список [INT]) -> TreeNode: если НУМС == []: возвращение Отсутствует индекс = nums.index (макс (НУМС)) корень = TreeNode (макс (НУМС)) root.left = self.constructMaximumBinaryTree (НУМС [: индекс]) root.right = self.constructMaximumBinaryTree (НУМС [индекс + 1:]) возвращение корень
Учитывая два бинарных деревьев поиска root1
и root2
.
Возвращает список , содержащий все целые числа от обоих деревьев сортируются в порядке возрастания.
Пример 1:
![](https://assets.leetcode.com/uploads/2019/12/18/q2-e1.png)
Входной сигнал: root1 = [2,1,4], root2 = [1,0,3] Выход: [0,1,1,2,3,4]
Пример 2:
Входной сигнал: root1 = [0, -10,10], root2 = [5,1,7,0,2] Выход: [-10,0,0,1,2,5,7,10]
Пример 3:
Входной сигнал: root1 = [], root2 = [5,1,7,0,2] Выход: [0,1,2,5,7]
Пример 4:
Входной сигнал: root1 = [0, -10,10], root2 = [] Выход: [-10,0,10]
Пример 5:
![](https://assets.leetcode.com/uploads/2019/12/18/q2-e5-.png)
Входной сигнал: root1 = [1, NULL, 8], root2 = [8,1] Выход: [1,1,8,8]
Ограничения:
- Каждое дерево имеет в большинстве
5000
узлов. - Значение каждого узла между
[-10^5, 10^5]
.