私はツリーを初期化してノード(stems)を追加し続ける再帰的な挿入関数を持つバイナリ検索ツリーを正しく構築しようとしています。ここで私は(そう、おそらくあまりにも長ったらしい、コーディングに新しい)、これまで行ってきたコードは次のとおりです。バイナリ検索ツリー - 再帰的挿入python
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
私は、メインメソッドでは、この新しいツリーに値を追加しよう:
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文のどこかで発生していると推測しています。誰かが私のエラーがどこにあるかを知ることができる、またはこのコードをより読みやすくする/ユーザーフレンドリーにするためのヒントがあれば、私は感謝しています!このように同様
self.__root.right_child._recursive_insert(self.__root, value)
:
1.インデントを修正します。 2 'insert_element'を含め、あなたのコードをすべて投稿してください。 –
インデントを修正し、残りのコードを投稿しました!これらの以前の間違いをお詫び申し上げます:/ – runnergirl9