class Node:
def __init__(self, v):
self.l = None
self.r = None
self.v = v
class BinaryTree:
def __init__(self):
self.root = None
def put(self, v):
if self.root is None:
self.root = Node(v)
else:
if self.root is None:
self.root = Node(v)
elif self.root.v <= v:
self.root.r = self.put(self.root.r, v)
elif self.root.v > v:
self.root.l = self.put(self.root.l, v)
return self.root
def __contains__(self, v):
return finns(self.root, v)
def write(self):
if self.root is not None:
print(self.root.v)
if self.root.l is not None:
self.write(self.root.l)
if self.root.r is not None:
self.write(self.root.r)
a = BinaryTree()
a.put(3)
a.put(4)
a.write()
Интересно, почему это не работает. Он говорит:Проблемы с внедрением двоичного дерева
TypeError: put() takes 2 positional arguments but 3 were given
Я просто хочу, чтобы использовать put()
для ввода чисел в дереве.
(Примечание: «V» означает значение «R» для правой и «L» для левой.).
Вы называете 'self.put' с двумя аргументами' 'self.root.r' и V'. Это слишком много аргументов. – chepner
Удалите 'self' перед' put', чтобы вызвать его из другого объекта. –
Вы пишете 'self.put (self.root.r, v)'. Здесь вы пишете два параметра явно (а третий - 'self'). Но ваш 'put' ожидает только два (неявно) и один (явно). –