Я пытаюсь реализовать двоичные операции поиска в python. На данный момент я написал код для добавления узлов в это дерево поиска (отсортировано). Вот что я имею в моем коде:Действия двоичного поиска дерева
class TreeNode:
def __init__(self, data):
self.data = data
self.lLink = None
self.rLink = None
class BinaryTree:
def __init__(self):
self.root = None
def AddNode(self, data):
if self.root is None:
self.root = TreeNode(data)
else:
if data < self.root.data:
if self.root.lLink is None:
self.root.lLink = TreeNode(data)
else:
AddNode(self.root.lLink, data)
else:
if self.root.rLink is None:
self.root.rLink = TreeNode(data)
else:
AddNode(self.root.rLink, data)
def InOrder(self, head):
if self.root.lLink is not None:
InOrder(self.root.lLink)
print self.root.data,
if self.root.rLink is not None:
InOrder(self.root.rLink)
myTree = BinaryTree()
myTree.AddNode(15)
myTree.AddNode(18)
myTree.AddNode(14)
Как проверить, если мой AddNode()
метод является правильным? Я знаю алгоритм, но, чтобы быть уверенным. То, что я думал, это создать метод InOrder() и попытаться напечатать элементы через этот обход InOrder. В результате мои данные, добавленные в дерево, должны отображаться в отсортированном порядке. Если он отображается в отсортированном порядке, я буду уверен, что оба метода AddNode() и InOrder() верны.
Вы wan't заказовМои(), чтобы напечатать данные от крайне левых до крайне правых? Почему InOrder() принимает параметр head ... для чего? – pypat
Именно так вы должны тестировать функцию вставки. так, разве у вас есть свой ответ? что еще вы хотите знать? – SiddharthaRT
Ой, подождите, InOrder не работает вообще. Публикация изменений. – SiddharthaRT