¿Existe un algoritmo de tiempo O (N) para esta pregunta?

Sí hay.

Digamos que su árbol binario [math] T [/ math] tiene nodos [math] n [/ math]. Podemos asociar con el árbol un vector con entradas [matemáticas] n [/ matemáticas], cada una de las cuales es el peso asociado con el vértice correspondiente.

Si los pesos del árbol satisfacen la propiedad Children Sum, llame al vector correspondiente un vector CSP. Obviamente el origen (Todos los pesos = 0) es un vector CSP. Además, aunque no usamos este hecho directamente, no es difícil ver que los vectores CSP forman una red entera; Solo lo menciono, ya que formó la base intuitiva de mi solución.

Tenga en cuenta que podemos construir un vector CSP simple [math] \ mathbf {V} [/ math] con todas las entradas distintas de cero en el tiempo [math] O (n) [/ math] de la siguiente manera: asigne un peso de 1 a todos los vértices de las hojas y complete los valores de los nodos internos para mantener la propiedad de suma de elementos secundarios. Ahora, deje que el peso máximo entre todos los nodos en el árbol original sea [math] w [/ math]. El vector [math] w \ cdot \ mathbf {V} [/ math] también es un vector CSP, con todas las entradas mayores que el vector original. De este modo, podemos incrementar los pesos originales para lograr la propiedad deseada.

More Interesting

¿Cuál es el tipo de algoritmo utilizado para resolver el problema de 8 reinas?

¿Cuál fue tu algoritmo favorito del que aprendiste mucho?

¿Cuáles son las aplicaciones en tiempo real del algoritmo de Dijkstra?

Cómo escribir un programa ruby ​​para mostrar los números de Armstrong en una matriz (siendo la matriz; Números = [123,124,153,370,234,23,45]

¿Qué 'palabras' debo saber para resolver problemas de programación o problemas matemáticos relacionados?

Dados dos archivos de registro, cada uno con mil millones de nombres de usuario, ¿cómo podemos encontrar todos los nombres de usuario presentes en ambos archivos de registro de manera eficiente?

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

¿Cómo puedo usar el algoritmo de Baum-Welch para agregar observaciones perdidas?

Cómo identificar la recursividad en un problema de programación

¿Cuál crees que es la razón por la cual las personas pueden resolver acertijos complejos? ¿Es práctica o nacen genios?

Cómo elegir la estructura de datos correcta

¿Debería un principiante construir cosas y contribuir a proyectos de código abierto antes de aprender algoritmos?

Cómo aprender estructuras de datos y algoritmos lo suficientemente buenos como para conseguir un trabajo en 10 meses

¿Existen buenos libros o recursos para resolver problemas y algoritmos en C #, para la preparación de entrevistas SDET?

¿Cuál es el mejor algoritmo de cifrado real utilizado en el almacenamiento de datos basado en hardware?