Pythonでバイナリツリーの実装を作成しようとしていますが、再帰を使用して子ノードを追加する際にエラーが発生しています。私はめったにPythonを使用せず、addChild()に4つの引数が与えられた場所を理解できませんでした。私の理解によれば、関数プロトタイプと同じ3つしか与えていません。他の関数の実装は無視してください。バイナリツリーにノードを挿入中にPythonエラーが発生しました
はここに私のコードです:
Traceback (most recent call last):
File "z.py", line 50, in <module>
obj.addChild(12, "hari")
File "z.py", line 42, in addChild
self.addChild(current.get_rightChild(), key, value)
TypeError: addChild() takes exactly 3 arguments (4 given)
class Node:
def __init__(self, key = None, value = None, leftChild = None, rightChild = None, parent = None):
self.key = key
self.value = value
self.leftchild = leftChild
self.rightChild = rightChild
self.parent = parent
def get_key(self):
return self.key
def get_value(self):
return self.value
def get_leftChild(self):
return self.leftChild
def get_rightChild(self):
return self.rightChild
def get_parent(self):
pass
def isLeaf(self):
pass
def isRoot(self):
pass
class BinaryTree:
def __init__(self, key = None, value = None, leftChild = None, rightChild = None, parent = None):
self.root = Node(key, value, leftChild = None, rightChild = None, parent = None)
def addChild(self, key, value):
if self.root is None:
self.root = Node(key, value, leftChild = None, rightChild = None, parent = None)
else:
current = self.root
if current is None:
current = Node(key = None, value = None, leftChild = None, rightChild = None, parent = None)
elif current.get_key() < key:
self.addChild(current.get_rightChild(), key, value)
elif current.get_key() > key:
self.addChild(current.get_leftChild(), key, value)
obj = BinaryTree(10, "ram")
obj.addChild(12, "hari")
あなたのコードを簡素化するための小さなヒント:は、これであなたの
addChild
メソッドを置き換えるツリーは、再帰的な構造です - ルートの子供たちはまた、木のように扱うことができます。 current.get_leftChild() arg2に - - キー ARG3 - すべてのクラスメソッドの値 – GingerPlusPlus