Как найти среднюю глубину папки? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь решить проблему, когда пишу функцию, которая вычисляет среднюю глубину папки в дереве. Однако компилятор говорит мне, что не может проанализировать мой вывод, вот точная ошибка:

#Traceback (most recent call last):
#  File "solution.py", line 59, in <module>
#    res = average_folder_depth(root)
#  File "solution.py", line 27, in average_folder_depth
#    levelSum += current.self.children
#AttributeError: 'Folder' object has no attribute 'self'

from collections import deque

class Folder:
    def __init__(self):
        self.children = []

def find_average_folder_depth(root):
    if root is None:
        return

    queue = deque()
    queue.append(root)
    while queue:
        levelSize = len(square)
        levelSum = 0.0
        for _ in range(levelSize):
            current = queue.pop(0)

            if current.left:
              queue.append(current.left)
            if current.right:
              queue.append(current.right):
        result.append(levelSum / levelSize)
    return result

Средняя глубина (0 + 1 + 2 + 3 + 4 + 2) / 6 = 2,0. В памяти дерево папок представляется следующим образом:

ROOT
 |---A   
 |   |---B
 |   |   |---C
 |   |   |   |---D
 |   |  
 |   |
 |   |---E

1 Ответ

0 голосов
/ 10 января 2020

Я предполагаю, что это current.self.children. Ключевое слово self необходимо только для внутреннего использования при определении методов / переменных экземпляра в вашем классе. После создания экземпляра вы вызываете методы / атрибуты без него.

Попробуйте: current.children

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...