Области применения kthSmallest
и inOrder
различны. Без указания i
в качестве глобальной переменной в kthSmallest
, i
не будет известно внутри inOrder
.
Области охвата вложенных функций
Для вложенных функций вам также необходимо объявить вашу глобальную переменную в области действия родительской функции.
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
global i
i = 0
def inOrder(root):
global i
if root is None:
return
inOrder(root.left)
i += 1
if i == k:
return
inOrder(root.right)
inOrder(root)
return i
Замечание 1
Похоже, вы используете класс в своем примере. Вы могли бы также сделать следующее:
class Solution:
self.i = 0
def kthSmallest(self, root: TreeNode, k: int) -> int:
self.i = 0
def inOrder(root):
if root is None:
return
inOrder(root.left)
self.i += 1
if self.i == k:
return
inOrder(root.right)
inOrder(root)
return i