#python #data-structures #binary-search-tree
#python #структуры данных #binary-search-tree
Вопрос:
Это хорошо работает, когда вставляется только значение в корень. Но когда дело доходит до вставки другого узла, он не может вставить, и единственное, что я получаю, это корневое значение. Вот код:
class BinarySearchTree():
class BinarySearchTreeNode():
def __init__(self,leftchildnode,rightchildnode,item):
self.leftchildnode = leftchildnode
self.rightchildnode = rightchildnode
self.item = item
def __init__(self):
self.root = None
def insert(self,item):
if self.root == None:
self.cur = self.BinarySearchTreeNode(None,None,item)
self.root = self.cur
else:
self.recursiveinsert(self.root,item)
def recursiveinsert(self,node,item):
if node is None:
node = self.BinarySearchTreeNode(None,None,item)
else:
if item < node.item:
self.recursiveinsert(node.leftchildnode,item)
else:
self.recursiveinsert(node.rightchildnode,item)
def inorderdisplay(self):
self.recursive_inorder_display(self.root)
def recursive_inorder_display(self,BinarySearchTreeNode):
if BinarySearchTreeNode != None:
self.recursive_inorder_display(BinarySearchTreeNode.leftchildnode)
print(BinarySearchTreeNode.item)
self.recursive_inorder_display(BinarySearchTreeNode.rightchildnode)
tree = BinarySearchTree()
tree.insert(13)
tree.insert(2)
tree.insert(15)
tree.inorderdisplay()
Как только я запускаю inroder, единственный результат, который я получаю, равен 13, не могли бы вы указать, где ошибка?
Ответ №1:
-
Ваш оператор инициализации в классе BinaryTree должен быть изменен,
-
Вы должны передать левый и правый элементы, чтобы сделать это рекурсивным способом. Пожалуйста, попробуйте проверить это репозиторий github для получения дополнительной информации,
#This should be changed to
def __init__(self,leftchildnode,rightchildnode,item):
self.leftchildnode = leftchildnode
self.rightchildnode = rightchildnode
self.item = item
#Please use this for the structure
def __init__(self, item):
self.leftchildNode = None
self.rightchildNode = None
self.item = item
Итак, вы можете проверить репозиторий github ниже для получения подробного кода
Пожалуйста, проверьте репозиторий github здесь для получения подробного кода