Python - повышение эффективности структуры данных дерева - PullRequest
0 голосов
/ 23 марта 2020

В настоящее время я работаю над структурой данных Tree в python. В данный момент я пытаюсь вычислить значения поддерева, где значение поддерева равно наибольшему значению узла в поддереве данного узла. Например, для данного дерева:

       A(5)
       / \
     C(2) D(8)
      |
     B(10)

Значение поддерева C будет равно 10, значение поддерева A будет равно 10, а значение поддерева D будет равно 8 et c. У меня есть следующий код для распространения значения поддерева вверх по дереву (так как каждый узел имеет элемент "subtree_value"), но я не могу улучшить свой алгоритм. Первоначально я использовал рекурсию, а затем переключился на вложенные циклы, так как я не очень опытен в рекурсии. Тем не менее, есть ли способ, которым я могу сделать это без необходимости вложенного l oop?

        node = subtree_a
        while node.parent != None: #iterates up the list until it reaches the root node
            children = node.parent.children
            for child in children:
                if (child.subtree_value > node.parent.subtree_value): #updates subtree value of parent based on largest child key
                    node.parent.set_subtree_val(child.subtree_value) 
            node = node.parent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...