Подтемы верховенство закона Leetcode -654. Максимальное бинарное дерево (Maximum Binary Tree)
Дан массив целых чисел содержат повторяющиеся элементы. Определить максимальное бинарное дерево, чтобы массивы, построенные следующим образом:
- Binary корень дерева является самым крупным элементом в массиве.
- Левое поддерево строятся по максимальному значению левой части массива максимального двоичного дерева.
- Правое поддерево строятся максимальным значением правой части массива максимального бинарного дерева.
Построение бинарного дерева по максимальному заданному массиву, и выводит корень этого дерева.
Пример:
Входные данные : [3,2,1,6,0,5] Выход: Возвращает это дерево ниже корневого узла: 6 / \ 35 \ / 20 \ 1
Советы:
- Учитывая размер массива между [1, 1000].
Л, соответственно, чтобы найти максимальное значение в интервале г, то левую и правую структуру поддерева ок.
/ ** * Определение для бинарного узла дерева. * Класс TreeNode общественного { * INT вал; * TreeNode влево; * TreeNode право; * TreeNode (целое х) {х = Val; } *} * / Класс Решение { общественного TreeNode constructMaximumBinaryTree ( ИНТ [] НУМС) { вернуться buildTreeNode (НУМС, 0, nums.length-1 ); } Общественных TreeNode buildTreeNode ( INT [] НУМС, INT л, INT г) { если (л> г) { возвращение нуль ; } INT индекс = -1 ; INT макс = Integer.MIN_VALUE; для ( INT I = л; я <= г; я ++ ) { если (НУМС [I]> макс) { макс = НУМС [I]; Индекс = я; } } TreeNode Рез = новый TreeNode (макс); res.left = buildTreeNode (НУМС, л, индекс-1 ); res.right = buildTreeNode (НУМС, индекс + 1 , г); вернуться Рез; } }