前提・実現したいこと
#実行して結果が全てTrueになることを確認する、これをうごかしたいです
Python
1root = Bintree3() 2root.insert(3,"three") 3root.insert(5,"five") 4root.insert(8,"eight") 5print(root.lessThan(9).key == 8) 6print(root.lessThan(8).key == 5) 7print(root.lessThan(7).key == 5) 8print(root.lessThan(6).key == 5) 9print(root.lessThan(5).key == 3) 10print(root.lessThan(4).key == 3) 11print(root.lessThan(3) == None) 12print(root.lessThan(2) == None)
ここに質問の内容を詳しく書いてください。
二分探索で値を探していく検索木を学んでいます。一つ目が用いているクラスの記述です。二つ目に載せたコードで指定された値key未満で最大のキーを持つ頂点を返すインスタンスメソッドlessThan(key)を、 BitreeのサブクラスのBintree3に定義することを考えているのですが、うまく動きません
Python
1class Bintree: 2 def __init__(self,key=None,data=None): 3 self.key = key 4 self.data = data 5 self.left = None 6 self.right = None 7 def search(self,key): 8 if self.key == None: 9 return None 10 if key < self.key: 11 if self.left == None: 12 return None 13 else: 14 return self.left.search(key) 15 elif key > self.key: 16 if self.right == None: 17 return None 18 else: 19 return self.right.search(key) 20 else: 21 return (self.key,self.data) 22 def insert(self,key,data): 23 if self.key == None: 24 self.key = key 25 self.data = data 26 return self 27 if key < self.key: 28 if self.left == None: 29 self.left = self.__class__(key,data) # selfと同じクラスのオブジェクトを生成する 30 return True 31 else: 32 return self.left.insert(key,data) 33 elif key > self.key: 34 if self.right == None: 35 self.right = self.__class__(key,data) # selfと同じクラスのオブジェクトを生成する 36 return True 37 else: 38 return self.right.insert(key,data) 39 else: # key == self.key: 40 return False 41 def __str__(self): 42 return "key="+str(self.key)+" data="+str(self.data) 43 def prints(self,d=0): 44 if self.left != None: 45 self.left.prints(d+1) 46 print(" "*d,self) 47 if self.right != None: 48 self.right.prints(d+1) 49
Python
1class Bintree3(Bintree): 2 def lessThan(self,key): 3 4 if self.key < key: 5 a = self 6 if self.right == None: 7 return a 8 else: 9 return self.right.lessThan(key) 10 if self.key >= key: 11 if self.left == None: 12 return a 13 else: 14 return self.left.lessThan(key) 15 16```### 発生している問題・エラーメッセージ 17Bintreeまでは与えられたものなので正確なのですが、Bintree3でaをうまく設定することが出来ずうごかなくなってしまっています 18
エラーメッセージ
UnboundLocalError: local variable 'a' referenced before assignment
### 該当のソースコード ```ここに言語名を入力 ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/12 12:04