Базовые функции класса Python не работают

#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. Я не согласен. Они действительно не нашли проблемы, код относительно лаконичен. Я бы предпочел помочь. Есть много других вопросов, которые стоит закрыть