LeetCode Кисть название ноты - рекурсия - преобразовать в упорядоченный массив бинарных деревьев поиска

Название Описание

Упорядоченный массив в соответствии с порядком возрастания, преобразуются в высокосбалансированном двоичное дерево поиска.

В этой задаче, очень бинарное дерево представляет собой бинарное дерево относится к левой и правой суб-дерево каждого узла разность высот между абсолютным значением не более 1.

Пример:

Учитывая упорядоченный массив: [-10, -3,0,5,9],

Один из возможных ответов: [0, -3,9, -10, нулевая, 5], он может быть выражен ниже этой высоты бинарного дерева поиска:

0
/ \
-3 9
/ /
-10 5

Источник: остаться кнопка (LeetCode)
ссылка: https: //leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree

Проблема решения идеи:

1, корень корень = НУМС [середины]

2, root.left = промежуточное значение оставшейся части слева

3, root.right = промежуточное значение оставшейся части слева

1  / ** 
2  * Определение для бинарного узла дерева.
3  * общественный класс TreeNode {
 4  * INT вал;
5  * TreeNode влево;
6  * TreeNode право;
7  * TreeNode (целое х) {х = Val; }
 8  *}
 9   * / 
10  класс Решение {
 11      общественных TreeNode sortedArrayToBST ( INT [] НУМС) {
 12 ,          если (nums.length == 0) возвращение  нуль ;
13          еще {
 14              возврата digui (НУМС, 0, nums.length-1 );
15         }
 16      }
 17      
18      общественных TreeNode digui ( INT [] НУМС, Int слева, Int справа) {
 19 ,          если (левый> правый) {
 20              возврата  нуль ;
21          }
 22          
23          INT середина = левый + (вправо-влево) / 2;  // 避免溢出风险;;;; 
24          TreeNode корень = новый TreeNode (НУМС [середина]);
25          root.left = digui (НУМС, слева, в середине-1 );
26          root.right = digui (НУМС, середина + 1 , справа);
27          возвращениекорень;
28      }
 29 }
Просмотр кода

 

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

отwww.cnblogs.com/sqchao/p/11073804.html