2017-07-02 132 views
0

我试图从二叉搜索树中插入和删除。到目前为止,我的插入功能起作用,但是我的移除功能不适用。我正在浏览我的代码,无法找到任何明显的错误。我收到的错误消息是line 69: root.right_child = self._recurisve_delete(root.right_child, value) AttributeError: 'Binary_Search_Tree' object has no attribute '_recurisve_delete'"这里实际发生了什么?从二叉搜索树(python)中删除?

​​

下面是测试代码我使用:

if __name__ == '__main__': 
    bst = Binary_Search_Tree() 
    values = [7, 2, 22, 5, 1, 8, 3, 6, 9, 8, 4, 11, 10, 12] 
    print('insert values', values) 
    for val in values: 
     bst.insert_element(val) #this all works well# 
    print('in-order: ', bst.in_order(), '\n') 
    bst.remove_element(22) 

输出:

in-order: [1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 22] 

的错误,当我尝试删除的元素来。任何有识之士将不胜感激!

回答

0

这只是一个错字。

elif root.value < value and root.right_child is not None: 
     root.right_child = self._recurisve_delete(root.right_child, value) 

应该

elif root.value < value and root.right_child is not None: 
     root.right_child = self._recursive_delete(root.right_child, value) 
+0

哇,我觉得自己像个白痴!就是这样。我想我一直在编写太长的代码......在这里,我想我有一些巨大的逻辑错误! – runnergirl9