Подтемы верховенство закона Leetcode -654. Максимальное бинарное дерево (Maximum Binary Tree)

Подтемы верховенство закона Leetcode -654. Максимальное бинарное дерево (Maximum Binary Tree)


 

Дан массив целых чисел содержат повторяющиеся элементы. Определить максимальное бинарное дерево, чтобы массивы, построенные следующим образом:

  1. Binary корень дерева является самым крупным элементом в массиве.
  2. Левое поддерево строятся по максимальному значению левой части массива максимального двоичного дерева.
  3. Правое поддерево строятся максимальным значением правой части массива максимального бинарного дерева.

Построение бинарного дерева по максимальному заданному массиву, и выводит корень этого дерева.

 

Пример:

Входные данные : [3,2,1,6,0,5] 
Выход: Возвращает это дерево ниже корневого узла: 

      6 
    / \ 
   35 
    \ / 
     20    
       \ 
        1

 

Советы:

  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 , г);
        вернуться Рез; 
    } 
}

 

рекомендация

отwww.cnblogs.com/qinyuguan/p/11515743.html