【发布时间】:2017-06-25 10:27:05
【问题描述】:
我正在尝试使用递归插入函数正确构建二叉搜索树,该函数将允许我初始化树并继续添加节点(茎)。这是我到目前为止所做的代码(对编码较新,所以可能太罗嗦了):
class Binary_Search_Tree:
class __BST_Node:
def __init__(self, value):
self.value = value
self.right_child = None
self.left_child = None
def __init__(self):
self.__root = None
self.__height = 0
self.value = None
def _recursive_insert(self, value):
new_stem = Binary_Search_Tree.__BST_Node(value)
if self.__root is None:
self.__root = new_stem
self.__root.value = new_stem.value
else:
if self.__root.value > new_stem.value:
if self.__root.right_child is None:
self.__root.right_child = new_stem
self.__root.right_child.value = new_stem.value
else:
self.__root.right_child._recursive_insert(self.__root, value)
else:
if self.__root.left_child is None:
self.__root.left_child = new_stem
self.__root.left_child.value = new_stem.value
else:
self.__root.left_child._recursive_insert(self.__root, value)
def insert_element(self, value):
element_to_insert = self._recursive_insert(value)
return element_to_insert
然后我尝试在 main 方法中向这个新树添加值:
if __name__ == '__main__':
new = Binary_Search_Tree()
new.insert_element(23)
new.insert_element(42)
new.insert_element(8)
new.insert_element(15)
new.insert_element(4)
new.insert_element(16)
我不断收到的错误是:'__BST_Node' object has no attribute '_recursive_insert' 这在插入第一个元素后弹出,所以我猜测错误发生在 else 语句的某处。如果有人能找出我的错误在哪里,或者有任何关于如何使这段代码更具可读性/用户友好性的提示,我将不胜感激!
【问题讨论】:
-
1.修正你的缩进。 2 请发布您的所有代码,包括
insert_element。 -
修复缩进并发布其余代码!对之前的错误感到抱歉:/
标签: python-3.x binary-search-tree