#python #class #oop
Вопрос:
Почему двоичное дерево не инвертируется в этом классе?
class Node: def __init__(self, data): self.left = None self.right= None self.data = data def show_tree (self): if self.left: self.left.show_tree() print(self.data) if self.right: self.right.show_tree() class Operation: def invertTree(self,root): if root: root.left, root.right==root.right, root.left self.invertTree(root.left) self.invertTree(root.right) return root root = Node(10) b=Node(15) c=Node(19) d=Node(5) e=Node(59) d.left=e d.right=c root.left=b root.right=d root.show_tree() oper=Operation() inver =oper.invertTree(root) inver.show_tree()
Другой класс возвращает перевернутый корень, поэтому, наконец, он должен вернуть перевернутый корень в обратное положение, но когда я его отображаю, он показывает то же дерево
Ответ №1:
root.left, root.right==root.right, root.left
сравнивает значения и возвращает логическое значение, если вы хотите назначить, вам нужно использовать один =
оператор
Комментарии:
1. я чувствую себя такой дурой, спасибо
2. В следующий раз я предлагаю вам использовать отладчик или добавить отпечатки, чтобы понять, что идет не так. Это будет быстрее и даст вам лучший опыт. В Pycharm есть отличный отладчик для python
3. @SurDin Вы должны проголосовать за то, чтобы закрыть такой вопрос как опечатка, а не отвечать на них.
4. Я не согласен. Они действительно не нашли проблемы, код относительно лаконичен. Я бы предпочел помочь. Есть много других вопросов, которые стоит закрыть