LeetCode de vez en cuando para cepillar la cuestión --convert Ordenado Array para árbol de búsqueda binaria

Convertir Ordenado Array para árbol de búsqueda binaria

Dada una matriz en donde los elementos se clasifican en orden ascendente, convertirlo en un BST altura equilibrada.

/**
 * 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) {
        if(nums.length==0){
            return null;
        }
        TreeNode head=helper(nums,0,nums.length-1);
        return head;
    }
    public TreeNode helper(int[] nums,int low,int high){
        if(low>high){
            return null;
        }
        int mid=(high+low)/2;
        TreeNode root=new TreeNode(nums[mid]);
        root.left=helper(nums,low,mid-1);
        root.right=helper(nums,mid+1,high);
        return root;
    }
}

Obviamente, tenemos que ordenar la matriz, con el fin de conseguir un árbol binario de búsqueda equilibrado, entonces tenemos que seguir tomando un nodo intermedio a la matriz. Podemos pensar fácilmente en la recursividad, para mantener la matriz se divide en dos, el elemento central de la matriz se asigna a la respectiva izquierda y el nodo nodo correcto, entonces la respuesta.

Publicados 173 artículos originales · ganado elogios 110 · Vistas de 100.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_35564813/article/details/104736998
Recomendado
Clasificación