在二进制搜索树中插入函数

时间:2015-06-14 14:42:08

标签: python insert binary-search-tree

我的二进制搜索树中的插入方法正在产生问题。我正在获得单独的节点而不是一个节点。我做错了什么?

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

1 个答案:

答案 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)