質問編集履歴
1
回答していただいたものへの返信のソースコードです
test
CHANGED
File without changes
|
test
CHANGED
@@ -142,6 +142,76 @@
|
|
142
142
|
|
143
143
|
|
144
144
|
|
145
|
+
```python
|
146
|
+
|
147
|
+
if curent: # curent else 条件分岐内にroot削除処理を挿入
|
148
|
+
|
149
|
+
if self.head.num == search_num:
|
150
|
+
|
151
|
+
if self.head.right == None and self.head.left == None:
|
152
|
+
|
153
|
+
self.head = None
|
154
|
+
|
155
|
+
return True
|
156
|
+
|
157
|
+
elif self.head.right == None and self.head.left:
|
158
|
+
|
159
|
+
self.head = self.head.left
|
160
|
+
|
161
|
+
return True
|
162
|
+
|
163
|
+
elif self.head.right and self.head.left == None:
|
164
|
+
|
165
|
+
self.head = self.head.right
|
166
|
+
|
167
|
+
return True
|
168
|
+
|
169
|
+
else:
|
170
|
+
|
171
|
+
head_tmp = self.head
|
172
|
+
|
173
|
+
curent = self.head.right
|
174
|
+
|
175
|
+
prev = None
|
176
|
+
|
177
|
+
while curent.left:
|
178
|
+
|
179
|
+
prev = curent
|
180
|
+
|
181
|
+
curent = curent.left
|
182
|
+
|
183
|
+
self.head = curent
|
184
|
+
|
185
|
+
self.head.left = head_tmp.left
|
186
|
+
|
187
|
+
if curent.num < prev.num:
|
188
|
+
|
189
|
+
prev.left = self.head.right
|
190
|
+
|
191
|
+
else:
|
192
|
+
|
193
|
+
prev.right = self.head.right
|
194
|
+
|
195
|
+
self.head.right = prev
|
196
|
+
|
197
|
+
return True
|
198
|
+
|
199
|
+
else:
|
200
|
+
|
201
|
+
while True:
|
202
|
+
|
203
|
+
・
|
204
|
+
|
205
|
+
・
|
206
|
+
|
207
|
+
・
|
208
|
+
|
209
|
+
以下続き
|
210
|
+
|
211
|
+
```
|
212
|
+
|
213
|
+
|
214
|
+
|
145
215
|
### 試したこと
|
146
216
|
|
147
217
|
関数deleteminが間違っている気がして、いろいろ処理を追加したり、rightとleftの書き間違いかと、入れ替えたりしてみたのですが、上記のコードが一番まともに動作しています。
|