问题描述
python的初学者在这里。 我正在尝试为二叉搜索树创建一个插入方法。 当我给根提供一个整数作为开始而不是仅仅传递 self.root = BinaryTreeNode() 时,插入方法就起作用了。 您能告诉我如何在不传递整数的情况下完成此操作吗? 谢谢!
class BinaryTreeNode:
def __init__(self, data=None):
self.data = data
self.left = None
self.right = None
def __str__(self):
return str(self.data)
class BinarySearchTree:
def __init__(self, root = None):
self.root = BinaryTreeNode()
self.count = 0
def __str__(self):
return str(self.inOrder())
# insert
def insert(self, data):
self.root = self.recursiveInsert(data, self.root)
self.count+=1
def recursiveInsert(self, data, node):
if node is None:
node = BinaryTreeNode(data)
else:
if data < node.data:
if node.left is None:
node.left = data
else:
self.recursiveInsert(data,node.right)
else:
if node.right is None:
node.right = data
else:
self.recursiveInsert(data,node.left)
bst = BinarySearchTree()
bst.insert(5)
我得到的错误是:
in <module> bst.insert(5)
line 15, in insert self.root = self.recursiveInsert(data, self.root)
if data < node.data:
TypeError: '<' not supported between instances of 'int' and 'NoneType'
1楼
问题很简单,您从未考虑过新树的基本情况。 将此中间子句添加到您的插入中:
if node is None:
node = BinaryTreeNode(data)
elif node.data is None:
node.data = data
else:
if data < node.data:
...