[英]Binary Search Tree - Insert Method - Python
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'
問題很簡單,您從未考慮過新樹的基本情況。 將此中間子句添加到您的插入中:
if node is None:
node = BinaryTreeNode(data)
elif node.data is None:
node.data = data
else:
if data < node.data:
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.