質問編集履歴

1

追加

2021/09/05 20:21

投稿

fu_3823
fu_3823

スコア81

test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  if not node.left and not node.right:
38
38
 
39
- self.max_depth = max(self.max_depth, depth)
39
+ self.max_depth = max(self.max_depth, depth) ###
40
40
 
41
41
  else:
42
42
 
@@ -51,3 +51,43 @@
51
51
  return self.max_depth
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ 言葉足らずでした。ehshellさんがおっしゃる通り、全てのselfを外すという解釈で正しいです。
58
+
59
+ その時の" local variable 'max_depth' referenced before assignment "エラーは、
60
+
61
+ 当然ですが###の部分で出ます。
62
+
63
+ selfを外すと、max_depthローカル変数として扱われるということはわかりました。
64
+
65
+
66
+
67
+ ただ、self.max_depth=0 は、maxDepth関数内で宣言されています。
68
+
69
+ グローバル変数は、関数外でイニシャライズするものとばかり思っていたのですが、
70
+
71
+ 上記のような形で、グローバル変数をイニシャライズすることも多いのでしょうか。
72
+
73
+ 例えば今回の場合では、`
74
+
75
+ ```Python
76
+
77
+ def __init__(self):
78
+
79
+ self.max_depth = 0
80
+
81
+
82
+
83
+ def maxDepth(self, root: Optional[TreeNode]) -> int:
84
+
85
+ #以下、略
86
+
87
+ ```
88
+
89
+ のようにするのが作法と思っていましたが、そうでもないのでしょうか。
90
+
91
+
92
+
93
+ ```