¿Cómo encontrar una ruta con la suma máxima en un BST (no BT)?

Nota : Explicación debajo del pseudocódigo.

Una pila extra para mantener.

int sum (nodo)
{
si nodo-> izquierda = NULL y nodo-> derecha = NULL
nodo de retorno-> valor

más si nodo-> left = NULL
nodo de retorno-> valor + suma (nodo -> derecha)
más si nodo -> derecha = NULL
nodo de retorno-> valor + suma (nodo -> izquierda)
más
return node-> value + max (sum (node ​​-> right), sum (node ​​-> left))
}

vacío maxsumpath (nodo)
{
si nodo-> izquierda = NULL y nodo-> derecha = NULL
empujar el nodo a la pila
regreso

más si nodo -> left = NULL

maxsumpath (nodo -> derecha)
empujar el nodo a la pila

más si nodo -> derecha = NULL

maxsumpath (nodo -> izquierda)
empujar el nodo a la pila

más
si suma (nodo -> izquierda) derecha)
maxsumpath (nodo -> derecha)
empujar el nodo a la pila
más
maxsumpath (nodo -> izquierda)
empujar el nodo a la pila
}

principal ()
{
variables maxsum y nodemax

para cada nodo en el árbol:
Temporal_sum = nodo -> val + suma (nodo-> izquierda) [si existe nodo-> izquierda] + suma (nodo-> derecha) [si existe nodo-> derecha]
if maxsum> temporary_ sum
maxsum = temporary_sum
nodemax = nodo

maxsumpath (nodemax-> right) [si existe]
empuje nodemax en la pila
maxsumpath (nodemax-> left) [si existe]

pop todos los elementos de la pila para obtener la ruta.

}

Explicación:
1. la función sum calcula la suma máxima que se puede obtener hasta ese nodo desde una hoja.
2. maxsumpath imprime la ruta que se siguió para obtener la suma de nodemax.
3. Los elementos se insertan en la pila en el orden inverso para que se muestren en el orden correcto.

Mejora de la eficiencia: O total (n)

1. Llame a la función de suma en orden creciente de altura de los nodos para todos los nodos y almacene los valores de suma.
2. Utilice valores calculados previamente para calcular los valores de suma para nuevos nodos. (Enfoque de programación dinámica)

Suposición: La entrada consiste en números positivos.

Espero que sea claro y resuelva la duda.

Ok, ¿también necesito hacer un video de esto y hacerte entender usar eso mientras comes palomitas de maíz y bebes coca cola, eso también que debería haber comprado?

More Interesting

¿Existe una versión del problema de la mochila en la que haya una restricción sobre qué objetos se pueden colocar en la bolsa?

¿Cuántas permutaciones se pueden generar a partir de '10011111111'? Cual es la formula?

Cómo comenzar a crear un modelo / pronóstico de ventas con dos años y medio de datos de ventas anteriores

¿Convertir el tamaño de matriz en un número primo ayuda en la implementación de la tabla hash? ¿Por qué?

Cómo implementar el algoritmo

¿Cuáles son los posibles algoritmos utilizados en los juegos de carrera sin fin?

¿Es una mala idea usar Python para aprender algoritmos y programación competitiva?

Cómo planificar 1-2 años de programación para convertirse en un experto en algoritmos, suponiendo que tenga un conocimiento de C ++ en la escuela secundaria

¿Existe una justificación "rigurosa" de por qué los algoritmos de aprendizaje profundo necesitan una gran cantidad de datos?

¿Cuáles son los diferentes enfoques que uno puede tomar para mejorar la precisión dado un conjunto de datos además de probar diferentes algoritmos en el aprendizaje automático?

Cómo escribir un código para un árbol en estructuras de datos

¿Es posible tener un número de elementos en una matriz más que el tamaño de la matriz que se define en un momento de compilación?

¿Cómo funciona el algoritmo de creación de coincidencias dota 2?

Cuando aumentamos la cantidad de datos de entrenamiento en el algoritmo KNN, ¿por qué se reduce la tasa de error?

¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?