Pythonを使用してBSTを学習していましたが、insertメソッドとfindメソッドを実装しようとしました。しかし、insertNodeメソッドの最大再帰深度を超過しました。私はBSTのデータ構造に慣れていないので、Pythonでメソッドを実装するのに苦労しています。私は研究し、インターネット上のコードに似たコードを作ってみましたが、まだエラーが出ています。バイナリ検索ツリーを実装しているときにPythonの最大再帰深度を超えました
class Node:
def __init__(self,data):
self.data = data
self.left = None
self.right = None
class BST:
def __init__(self):
self.root = None
def insert(self,data):
temp = Node(data)
if self.root is None:
self.root = temp
else:
self.insertNode(self.root,data)
def insertNode(self,root,data):
temp = Node(data)
if data < self.root.data:
if self.root.left is None:
self.root.left = temp
else:
self.insertNode(self.root.left,data)
elif data > self.root.data:
if self.root.right is None:
self.root.right = temp
else:
self.insertNode(self.root.right,data)
def findinTree(self,root,data):
if self.root is None:
return False
if data == self.root.data:
return True
if data < self.root.data:
self.findinTree(self.root.left,data)
else:
self.findinTree(self.root.right,data)
return False
bst = BST()
bst.insert(30)
bst.insert(10)
bst.insert(50)
bst.insert(90)
bst.insert(100)
bst.insert(15)
エラーをデバッグして、機能が意図したとおりに機能するようにしてください。
正確なエラーとは何で、どのようにを呼び出し続けますそれは起こるのですか?ここにエラートレースを貼り付けることはできますか? – ShreyasG
あなたは 'sys.setrecursionlimit'で再帰制限を増やすことができます。注意するだけで、Pythonのスタックフレームはかなり大きくなる可能性があります。 – Jacobr365
トレースバック(最新の呼び出しの最後):insertNode ファイル「パイソン」、29行目の挿入 ファイル「パイソン」、29行目で ファイル「パイソン」で ファイル「パイソン」、47行、16行、 in insertNode insertNodeのファイル "python"、29行目、 insertNodeファイル "python"、29行目、insertNodeファイル "python"、行19、 RuntimeError:最大再帰深度が@ShreyasGを超えました –