我的二进制搜索树中的插入方法正在产生问题。我正在获得单独的节点而不是一个节点。我做错了什么?
class Node:
def __init__(this,key,value):
this.key = key
this.value = value
this.left = null
this.right = null
def insert(this,root,key,value):
if(root == null):
root = Node(key,value)
return root
elif(root.key < key):
root.left = root.insert(root.left,key,value)
return root
elif(root.key > key):
root.right = root.insert(root.right,key,value)
return root
else:
print("Data already exists!")
return root
答案 0 :(得分:2)
您的代码在搜索路径上做了一个奇怪的修改。例如,看一下
行 root.left = root.insert(root.left,key,value)
它说“节点的新左子节点是root.insert
返回的内容。”
所以让我们说它继续下降30多个级别,然后找到关键。它执行
else:
print("Data already exists!")
return root
这样可以更新各种各样的东西。可能不是你想要的。
您可以通过更改
来解决此问题root.left = root.insert(root.left,key,value)
到
return root.insert(root.left,key,value)