104. Profundidad máxima del árbol binario
Dada la raíz de un árbol binario, devuelve su profundidad máxima.
La profundidad máxima de un árbol binario es el número de nodos a lo largo del camino más largo desde el nodo raíz hasta el nodo hoja más lejano.
Ejemplo 1:
Entrada: raíz = [3,9,20,null,null,15,7]
Salida: 3
Ejemplo 2:
Entrada: raíz = [1,nulo,2]
Salida: 2
Restricciones:
- El número de nodos en el árbol está en el rango [0, 1 0 4 10^41 04 ].
- -100 <= Valor.nodo <= 100
De: LeetCode
Enlace: 104. Profundidad máxima del árbol binario
Solución:
Ideas:
Función principal: maxDepth(struct TreeNode root) *
Esta función calcula la profundidad máxima de un árbol binario de forma recursiva. Así es como funciona:
-
Caso base: si el nodo raíz es NULL, la profundidad es 0. Esto significa que ha llegado al hijo de un nodo hoja (que no existe), por lo que devuelve 0.
-
Caso recursivo: de lo contrario, la función calcula la profundidad máxima de los subárboles izquierdo y derecho mediante llamadas recursivas.
-
Encuentra el máximo y regresa: Finalmente, la función encuentra el máximo de las dos profundidades obtenidas anteriormente y le suma 1. La suma de 1 representa la profundidad del nodo actual.
Código:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int max(int a, int b) {
return (a > b) ? a : b;
}
int maxDepth(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}