Categorías
Algorithms

LeetCode – Suma máxima de ruta de árbol binario (Java)

Dado un árbol binario, encuentre la suma máxima de la ruta. La ruta puede comenzar y terminar en cualquier nodo del árbol. Por ejemplo, dado el siguiente árbol binario

       1
      / 
     2   3

el resultado es 6.

Análisis

1) Resuelve este problema de forma recursiva
2) Obtenga la mayor suma izquierda y derecha
2) Compare con el máximo almacenado

Solución Java

También podemos usar una matriz para almacenar valor para métodos recursivos.

public int maxPathSum(TreeNode root) {
	int max[] = new int[1]; 
	max[0] = Integer.MIN_VALUE;
	calculateSum(root, max);
	return max[0];
}
 
public int calculateSum(TreeNode root, int[] max) {
	if (root == null)
		return 0;
 
	int left = calculateSum(root.left, max);
	int right = calculateSum(root.right, max);
 
	int current = Math.max(root.val, Math.max(root.val + left, root.val + right));
 
	max[0] = Math.max(max[0], Math.max(current, left + root.val + right));
 
	return current;
}

  LeetCode - Secuencia consecutiva más larga (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *