Основная проблема заключается в том, что вы используете глубокую копию во временном списке. Посмотрим, что происходит на каждой итерации:
- Ваш начальный корень проверяется, а дочерние узлы создаются
- Эти дочерние узлы размещены в новой строке
- Копии этих дочерних узлов копируются в строку для следующей итерации.
Это означает, что последующая итерация будет состоять не из созданных вами узлов (и на которые указывают root.left и root.right), а из их копий, оставляя оригиналы в их текущем состоянии (с None
для .left
и .right
)