Несвязанная локальная ошибка, хотя переменная определена - PullRequest
0 голосов
/ 20 июня 2020

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

class Node:
    def __init__(self,key):
        self.left=None
        self.right=None
        self.val=key
    def __str__(self):
        return str(self.val)
root = Node(3)
root.left = Node(9)
root.right = Node(20)
root.right.left = Node(15)
root.right.right = Node(7)

Это код, который я использую:

def tdmaxdepth(TreeNode):
    tree_depth=0
    def helper(node,depth):
        # print(tree_depth,depth)
        if not node :
            return 
        if not node.left and not node.right:
            tree_depth=max(tree_depth,depth)
            
        else:
            helper(node.left,depth+1)
            helper(node.right,depth+1)
        
    helper(root,0)
    return tree_depth
print(tdmaxdepth(root))

Но я получаю «UnboundLocalError: локальная переменная tree_depth, на которую ссылается перед назначением» . Я предполагаю, что это из-за проблемы с глобальной и локальной областью видимости. Но я не знаю, как ее решить, и я не хочу использовать ключевое слово global. Может ли кто-нибудь предложить решение, пожалуйста. Я могу использовать переменную класса. как это сделать?

...