Название Описание
Упорядоченный массив в соответствии с порядком возрастания, преобразуются в высокосбалансированном двоичное дерево поиска.
В этой задаче, очень бинарное дерево представляет собой бинарное дерево относится к левой и правой суб-дерево каждого узла разность высот между абсолютным значением не более 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 = промежуточное значение оставшейся части слева
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }