Entrevista al programador preguntas clásicas doradas de la entrevista 04.02. Árbol de altura mínima

1. Introducción al tema

Dada una matriz ordenada de números enteros con diferentes elementos y dispuestos en orden ascendente, escriba un algoritmo para crear un árbol de búsqueda binario con la altura más pequeña.

Ejemplo:
dada una matriz ordenada: [-10, -3,0,5,9],

Una posible respuesta es: [0, -3,9, -10, nulo, 5], que puede representar el siguiente árbol de búsqueda binaria altamente equilibrado:

          0 
         / \ 
       -3 9 
       / / 
     -10 5 

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/minimum-height-tree-lcci
Copyright es propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Dos ideas para resolver problemas

        Las características que cumple el árbol de altura mínima: la diferencia de altura entre los subárboles izquierdo y derecho de cualquier nodo no supera 1. De acuerdo con los requisitos del tema, use el método recursivo para encontrar continuamente la posición media en la secuencia dada y construya el nodo del árbol binario de búsqueda. Consulte el código para obtener más detalles.

Tres, código de resolución de problemas

class Solution {
public:
    //最小高度树满足的条件:任意节点的左右子树的高度差不能超过1
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return dfs(nums, 0, nums.size()-1);
    }

    TreeNode* dfs(vector<int>& nums, int l, int r)
    {
        if(l > r)
            return NULL;
        int mid = (l+r) >> 1;
        TreeNode* node = new TreeNode(nums[mid]);
        node->left = dfs(nums, l, mid-1);
        node->right = dfs(nums, mid+1, r);
        return node;  
    }
};

Cuatro, resultados de resolución de problemas

Supongo que te gusta

Origin blog.csdn.net/qq_39661206/article/details/108143614
Recomendado
Clasificación