为什么此插入二进制搜索树的代码不起作用?
class BinaryTreeNode:
def __init__(self,key):
self.key=key
self.left=None
self.right=None
def insert(root,data):
if root is None:
root=BinaryTreeNode(data)
else:
if data>root.key:
insert(root.right,data)
else:
insert(root.left,data)y
代码的逻辑看起来很好,但是我有一个顾虑。在这段代码中,返回是什么吗?
class BinaryTreeNode:
def __init__(self,key):
self.key=key
self.left=None
self.right=None
def insert(root,data):
if root is None:
root=BinaryTreeNode(data)
else:
if data>root.key:
insert(root.right,data)
else:
insert(root.left,data)
return
我在您的insert方法中添加了一个return,也许它现在可以运行。由于缺少return,您的方法将继续调用自身,但如果不返回,则堆栈将无法关闭,导致您的程序永远卡住。
我也创建了一个insert方法,也许您可以检查并测试是否错过了某个地方。
def insert(self, val):
treeNode = Node(val)
placed = 0
tmp = self.root
if not self.root:
self.root = treeNode
else:
while(not placed):
if val<tmp.info:
if not tmp.left:
tmp.left = treeNode
placed = 1
else:
tmp = tmp.left
else:
if not tmp.right:
tmp.right = treeNode
placed = 1
else:
tmp = tmp.right
return