だから、Pythonはこれを本当にしません。私はツリーと呼ばれるクラスを持っています、それはバイナリツリータイプです。参照のクラスのインスタンスを渡すPython
class Tree(object):
def __init__(self):
self.left = None
self.right = None
self.data = None
def filler(self, lista, tree):
tree = Tree()
nr = len(lista)
nr //= 2
if len(lista) == 0:
return
if len(lista) == 1:
tree.data = lista[0]
return
tree.data = lista[nr]
self.filler(lista[:nr], tree.left)
self.filler(lista[nr:], tree.right)
機能filler()
は、リストをバイナリツリーに変換します。
tr = Tree()
tr2 = Tree()
l = self.ctrler.Backtrack(self.ctrler.tsk, 0) -- some list
tr.filler(l, tr2)
print(tr2.data)
結果はNone
です。 filler()
は何もしません。これについて何かできますか? tr2
オブジェクトを参照渡しできますか?私が参照渡しできない場合、リストをバイナリツリーに変換するにはどうすればよいですか?フィラーのツリーのinstatiationなし
トレースバック:
Traceback (most recent call last):
File "D:/Projects/Python/AIExcavator/src/ui.py", line 75, in <module>
uier.inter()
File "D:/Projects/Python/AIExcavator/src/ui.py", line 63, in inter
tr.filler(l, tr2)
File "D:\Projects\Python\AIExcavator\src\Backtracking.py", line 79, in filler
self.filler(lista[:nr], tree.left)
File "D:\Projects\Python\AIExcavator\src\Backtracking.py", line 78, in filler
tree.data = lista[nr]
AttributeError: 'NoneType' object has no attribute 'data'
リストのリストです。私はそこで再帰を使用します。私の再帰は私のリストが終わったときに終わらなければならない。バイナリツリーを埋めるために、私のリストを2、左右に分割しました。それは正常に動作します(毎回、渡されたlsitの長さを印字することによってチェックされます)が、tr2を埋めることはありません – Mocktheduck