二分探索木を作りたい
pythonで二分探索木について勉強しているとき、二分探索木を作る関数を作った際に特定の変数だけ使えません。
発生している問題・エラーメッセージ
#ファイル名 addBST(1) #ファイル名 print(newIdx) UnboundLocalError: local variable 'newIdx' referenced before assignment
該当のソースコード
Python3
1class BST: 2 def __init__(self): 3 data = 0 4 left = 0 5 right = 0 6 7tree = [0]*10 8for i in range(len(tree)): 9 tree[i] = BST() 10rootIdx = 0 11newIdx = 0 12 13def addBST(data): 14 currentIdx = 0 15 addFlag = False 16 print(newIdx) 17 tree[newIdx].data = data 18 tree[newIdx].left = -1 19 tree[newIdx].right = -1 20 if newIdx != rootIdx: 21 currentIdx = rootIdx 22 addFlag = False 23 while True: 24 if data < tree[currentIdx].data: 25 if tree[currentIdx].left == -1: 26 tree[currentIdx].left = newIdxaddFlag = True 27 else: 28 currentIdx = tree[currentIdx].left 29 else: 30 if tree[currentIdx].right == -1: 31 tree[currentIdx].right = newIdx 32 addFlag = True 33 else: 34 currentIdx = tree[currentIdx].right 35 if addFlag == False: 36 break 37 newIdx += 1 38 39addBST(1) 40addBST(3) 41addBST(2)
試したこと
print関数の引数を他の変数(rootIdxや新しい変数tmp)などに変えたところ、正常に出力されました。
補足情報
環境
mojave 10.14.4
python 3.5.4
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。