Erik
вроде не
Igor
Речь не о корректности результата, а о том что нода попадает в очередь тем больше раз чем она дальше от листа
Erik
аааа,я понял
Erik
типа root.left.left.left ?
Igor
Тип нода слева от рута попадет в очередь на каждом следующем цикле
Igor
Опять же в случае бамбука, ты получишь квадратичный алгоритм, это в очередной раз доказывает что тесты на лиите говно
Erik
а по другому вроде как и нельзя написать
Erik
?
Igor
Нет, ты должен перебирать только текущий уровень потом создавать новую очередь и тд
Igor
Ну либо написать рекурсию и не парить себе мозг
Igor
Те не писать бфс, а перейти к дфс и не париться
Igor
Вообще полезно находить худший случай для своего алгоритма, отмазки в стиле проходит все тесты, это как у меня на машине работало, некст левел. Уже чуть лучше, но все еще плохой подход)
Erik
мне теории не хватает, я не знал что такое бфс и дфс до того как только что погуглил
Erik
ща напишу рекурсию
Igor
Добрался до компа ;)
Igor
добрался до компа ... чет я вообще не пойму как у тебя работает ;) ты попаешь ноду а после этого аппендишь в конец. когда ты будешь следующий раз попать .. ты же попнешь уже добавленную ноду ... чет я "поплыл"
Erik
Igor
а поп(0) каждый раз перестраивает массив
Igor
что опять же ведет к квадрату ...
Igor
когда у тебя в массиве n элементов ... то чтобы сделать pop(0) нужно сделать n-1 присваивание
Erik
Igor
ну тут легко пофиксить возьми деку
Igor
сука ... deque гугли в коллекшнах
Erik
импортировать - это читерство
Igor
и вместо pop(0) делаешь popleft
Igor
это стандартная библиотека
Igor
ну или не попай итерируй старый массив и создавай новый ... потом меняй их местами
Igor
т.е аппенщишь в nextnodes а в конце делаешь nodes = nextnodes
Igor
В принципе решение норм. Есть нюансы но они фиксятся легко и на не больших объемах не критично, когда глянул в дороге показалось вообще бред. "извините был напуган" ;)
Erik
в общем, сам рекурсию я не потянул, подсмотрел в дискашенс
https://dpaste.org/fedbD
Erik
ой, каунтер забыл убрать
Erik
спасибо
Erik
Erik
не знал что поп за линейное время работает, если убирать не последний элемент
Erik
@ikovrigin
https://leetcode.com/problems/average-of-levels-in-binary-tree/
https://dpaste.org/azag6
вот такая еще есть, тут не понятно как рекурсию использовать
Daniil
Erik
Erik
Erik
ща
Igor
Daniil
Как вариант, ты можешь свою deque написать, если у тебя будет фикс.размер, то тоже получишь pop за линию, даже лучше понять, как это работает
Erik
Igor
Угу. Ну какие то простые обходы дерева аж скучно ;)
Erik
я запутался
Igor
нет че квадрат только если не правильно обрабатывать список ... в остальных случаях у тебя линия ... все обходы это линия при нормальном написании.
Erik
Igor
Ты в каждую ноду приходишь один раз. Делаешь фиксированное кол-во действий . Соответсвенно это линия.
Igor
Та я ж говорю я тупанул ... я в дороге не понял что ты попаешь
Igor
меня вот эта тема запутала
Смотри когда ты обходишь DFS то худший случай это большая глубина ... а когда bfs то большая ширина. Худший в плане памяти . По времени что в том что в том случае будет N
Igor
Поэтому просто в каждом конкретном случае берешь какой обход удобнее тот и используешь.
Igor
Но для большинства задач вообще пофиг бфс или дфс
Igor
def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
levels = []
def rec(node, lvl):
if len(levels) <= lvl:
levels.append([0,0])
levels[lvl][0] += 1
levels[lvl][1] += node.val
if node.left:
rec(node.left, lvl + 1)
if node.right:
rec(node.right, lvl + 1)
rec(root, 0)
return [s/cnt for cnt, s in levels]
Igor
с dfs та же задача
Igor
Мне вообще кажется что у этих задач медиум сложность только потому что люди боятся деревьев ;)
Igor
107 задача то же самое ... даже среднее считаь не нужно просто числа пихануть в массив вот с какого перепуга она медиум
Erik
блять почему нельзя нормально называть переменные, в дискашенс постоянно что-то вырвиглазное творится
Иаков
Всем здаров, давно не виделись. Че, как?
Иаков
Erik
Иаков
dima
ребят, привет, поделитесь, пожалуйста книжкой тони гэддис - начинаем программировать на питон, 5 издание?
Erik
Erik
если хочешь именно тонни гэддиса, скачай 4 издание, вряд ли есть большая разница.
5 ты вряд ли найдешь слитым, он только в этом году вышел
Wells
dima
dima
Владимир
С чем связаны непонятные картинки на обложках книг по программированию ?
Erik
Владимир
Владимир
Либо слон, вот причём слон и программирование по С++ ?
Erik
А причём здесь гранат ?
да просто чтоб было проще идентифицировать наверное.
"скачай книжку с гранатом на обложке"
Erik
маркетинг все дела
..
С чего начать обучаться программированию на андроид?
eye=x×s²
eye=x×s²
Обьект класса зерно наследует обьект класса гранат