这是我想出了插入一个新值到BST代码:插入到二叉搜索树
class BST(object):
def __init__(self, root):
self.root = Node(root)
def insert(self, new_val):
self.__internal_insert(self.root, new_val)
def __internal_insert(self, node, new_val):
if node is None:
node = Node(new_val)
elif new_val < node.value:
self.__internal_insert(node.left, new_val)
else:
self.__internal_insert(node.right, new_val)
# Set up the tree
tree = BST(4)
# Insert elements
tree.insert(2)
tree.insert(1)
tree.insert(3)
tree.insert(5)
然而,在调试时我注意到,self.root
从不更新,例如:作为一旦__internal_insert()
方法完成并且执行新的insert()
,则其兄弟节点left
和right
返回到None
,而不是返回到之前设置的值。
希望你能帮我发现问题所在。我最近选择了Python,如果这是一个微不足道的问题,我很抱歉。
感谢您发现第二个问题。 –