0
私はツリートラバーサルを実行しようとしていますが、yieldはジェネレータオブジェクトを返しますが、ジェネレータオブジェクトを反復することはできません。私は非常にPythonに新しいので、任意の助けに感謝されます。Pythonジェネレータは反復処理しません
def inorder_keys(self):
try:
if self.flag:
self.head = self.root
self.head_key = self.root_key
self.flag = False
if self.head.left is not None:
self.head_key = self.head.left
self.head = self.dict_of_keys[self.head_key]
BinarySearchTreeDict.inorder_keys(self)
else:
yield self.head_key
yield self.head.parent
#print(self.head_key)
#print(self.head.parent)
temp = self.head.parent
self.head = self.dict_of_keys[temp]
self.head = self.dict_of_keys[self.head.right]
BinarySearchTreeDict.inorder_keys(self)
except KeyError:
self.flag = True
pass
try:
x = object01.inorder_keys()
print(''.join(x))
except Exception as e:
print(str(e))
出力:
C:\Python34\python.exe "...\output.py"
Process finished with exit code 0
私は確信していませんので、私の推測では、あなたは 'BinarySearchTreeDict.inorder_keys(自己)のxのために:yield x'(2か所で)をしたいと思っています –
私はあなたの提案を理解しています。 –
私はあなたがあなたのジェネレータを非常にうまく反復していると思いますが、あなたのジェネレータのコードはバグで、あなたが望んでいるものは返されません。デバッグの助けが必要な場合は、ロジックと[mcve]の説明を提供する必要があります。 – Julien