Позвольте мне переписать мой вопрос так, чтобы он был яснее. Я столкнулся с проблемой проблемы LeetCode: проверьте двоичное дерево поиска.переменная класса рекурсии python
Моего первое решение выглядит примерно так:
class Solution(object):
def recursion(self, input, var_x, ans):
#update var_x
#update ans
self.recursion(input, var_x, ans)
def mySolution(self, input):
ans = []
var_x = 0
self.recursion(input, var_x, ans)
return ans
Это решение не может пройти тест. Но после того, как я сделал простое изменение, она проходит:
class Solution(object):
def recursion(self, input, ans):
#update self.var_x
#update ans
self.recursion(input, ans)
def mySolution(self, input):
ans = []
self.var_x = 0
self.recursion(input, ans)
return ans
Какая разница, что объявить var_x против self.var_x? Я думаю, что эти два имеют такой же эффект в этой проблеме, но один проходит тест, другой нет?
Пожалуйста, проверьте свой отступ. –
удивительно, что он работает лучше, поскольку вы все еще делаете 'prev = node' (no' self.prev'). Пожалуйста, предоставьте (правильно отступы) [mcve] –
Поскольку это своего рода сайт для кодирования, я не хочу много говорить, но вы, возможно, неправильно поняли, как они представляют данные. Похоже, вы получаете представление массива упакованного бинарного дерева, где дети узла N пронумерованы 2N и 2N + 1. Напротив, вы создаете фактическое дерево с узловыми объектами, и это может быть ... излишним. –