0

私はleetcodeの問題をやっています - rightSideView. 内部ヘルパー関数を作成すると、外部関数変数にアクセスできると思いました。ただし、これは結果 (リスト) にのみ当てはまり、maxHeight (int) には当てはまりません。以下で参照されるコード:

class Solution(object):
    def rightSideView(self, root):
       result = []
       maxHeight = 0
       def dfs(node, height):
           if node is not None:
               height += 1
               if height > maxHeight:
                   maxHeight = height
                   result.append(node.val)
               dfs(node.right, height)
               dfs(node.left, height)
       dfs(root, 0)
       return result

これは、self.maxHeight; を参照すると修正できます。ただし、結果のために同じことをする必要はありません。どうしてこれなの?リストがPythonのクラス内のグローバル変数として作成される可能性はありますか? これを他にどのように説明すればよいかわかりません。

次のコードはエラーなしで動作します。

class Solution(object):
    def rightSideView(self, root):
       result = []
       self.maxHeight = 0
       def dfs(node, height):
           if node is not None:
               height += 1
               if height > self.maxHeight:
                   self.maxHeight = height
                   result.append(node.val)
               dfs(node.right, height)
               dfs(node.left, height)
       dfs(root, 0)
       return result
4

0 に答える 0