Оптимальное решение для обхода дерева и суммирования значений узлов при условии

В коде Visual Studio откройте «пользовательские настройки»: ctrl + p и введите >sett нажмите enter

Это откроет настройки по умолчанию с левой стороны и пользовательские настройки с правой стороны.

Просто добавьте путь к git.exe в пользовательских настройках

"git.path": "C:\\Users\\[WINDOWS_USER]\\AppData\\Local\\Programs\\Git\\bin\\git.exe"

Замените [WINDOWS_USER] своим именем пользователя.

Перезапустите Visual Studio Code

3
задан EddGarcia 25 March 2019 в 19:57
поделиться

1 ответ

Редактировать Неправильный ответ, не решить проблему, заданную ОП (см. Комментарий)
Старый ответ (до редактирования) Вы можете видеть, что это Проблема (как и большинство проблем на деревьях) может быть решена с помощью рекурсивного подхода. Это потому, что sum value узла зависит только от sum values и соответствующих ranks его дочерних элементов.

Вот псевдокод, описывающий решение.

get_sum(my_node, result_arr):
    my_sum = 0
    for child in my_node.children():
        get_sum(child, result_arr)        // we compute the sum value of the children
        if rank(child) >= rank(my_node):  // if child node is big enough add its sum
            my_sum += result_arr[child]
     result_arr[my_node] = my_sum         // store the result somewhere

Это алгоритм, основанный на BFS, который должен работать в O(n) с n количеством узлов в вашем дереве. Чтобы получить значения для всех узлов, вызовите эту рекурсивную функцию для корневого узла вашего дерева.

0
ответ дан m.raynal 25 March 2019 в 19:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: