【LeetCode】108。ソートされた配列をバイナリ検索ツリーに変換するソートされた配列をバイナリ検索ツリーに変換する(Easy)(JAVA)

【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%を上回る

おすすめ

転載: blog.csdn.net/qq_16927853/article/details/105824195