Как распечатать бинарное дерево? Чтобы выводились числа?
Я написала алгоритм бинарного дерева, но у меня выводятся какие-то зашифрованные коды вместо дерева, подскажите пожалуйста как нужно написать последнюю строчку, чтобы выводилось дерево.
from turtle import left, right
class Node:
def __init__(self,data):
self.left= None
self.right=None
self.data=data
def degree(self):
n=0
if left:
n=n+1
if right:
n=n+1
return n
def find(self,data):
if self.data:
if data ==self.data:
return True
elif data>self.data:
if self.right:
return self.right.find(data)
else:
return False
elif data<self.data:
if self.left:
return self.left.find(data)
else:
return False
else:
return False
def insert(self,data):
if self.data:
if data<self.data:
if self.data is None:
self.left=Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data
def printTree(self):
if self.left:
self.left.printTree()
print(self.data),
if self.right:
self.right.printTree()
def depth_first(self,root):
res=[]
if root:
res.append(root.data)
res=res+self.depth_first(root.left)
res=res+self.depth_first(root.right)
a=Node(1)
a.insert(2)
a.insert(3)
a.insert(0)
a.printTree(a.root)
Ответы (1 шт):
Автор решения: Andrey Maslov
→ Ссылка
у тебя ошибка в методе insert
def insert(self,data):
if self.data:
if data<self.data:
if self.left is None: # здесь была ошибка ты проверял не self.left a self.data
self.left=Node(data)
else:
self.left.insert(data)
elif data > self.data:
if self.right is None:
self.right = Node(data)
else:
self.right.insert(data)
else:
self.data = data
и вывод печати должен быть без параметров a.printTree()