【LeetCode】108。ソートされた配列をバイナリ検索ツリーに変換するソートされた配列をバイナリ検索ツリーに変換する(Easy)(JAVA)
タイトルアドレス:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
タイトル説明:
要素が昇順で並べ替えられている配列が与えられた場合、それを高さバランスのとれたBSTに変換します。
この問題では、高さバランスのとれた二分木は、すべてのノードの2つのサブツリーの深さが1を超えて異ならない二分木として定義されます。
例:
ソートされた配列が与えられた場合:[-10、-3,0,5,9]、
考えられる答えの1つは、[0、-3,9、-10、null、5]です。これは、次の高さバランスの取れたBSTを表します。
0
/ \
-3 9
/ /
-10 5
トピック
順序付けられた配列を昇順で、バランスの取れたバイナリ検索ツリーに変換します。
この質問では、高度にバランスの取れたバイナリツリーは、バイナリツリーの各ノードの左右のサブツリー間の高さの差の絶対値が1を超えないことを意味します。
問題解決方法
1.バイナリ検索ツリーのプレオーダートラバーサルは昇順の配列です
。2。中央の値を取り、左側のサブツリーは左側のサブツリー、右側のサブツリーは右側のサブツリーであり、継続的に繰り返します。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return sH(nums, 0, nums.length - 1);
}
public TreeNode sH(int[] nums, int start, int end) {
if (start > end) return null;
int mid = (start + end) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = sH(nums, start, mid - 1);
root.right = sH(nums, mid + 1, end);
return root;
}
}
実行時間:0ミリ秒、
すべてのJava送信でユーザーの100.00%を上回るメモリ消費量:39.1 MB、すべてのJava送信でユーザーの8.70%を上回る