0
以下は、ツリーを作成してツリーからノードを削除できる、私が取り組むプログラムです。私はノードの削除がどのように機能するのかを理解するのに苦労し、少しの指針を探しています。現在のところ、私のコードはノードを一番左の葉に置き換えますが、Imはそれが決してそこになかったように全体を削除するようにしようとしています。これは私が混乱している領域です。誰か説明できますか?Pythonのツリーからノードを削除する
def remove(self, data):
if self.root and self.root.data == data: # special case for removing the root
self.root = self.root.delete()
return
else: # general case, removing a child node of some parent
parent = self.root
while parent:
if data < parent.data:
child = parent.left
if child and child.data == data:
if child.left == None and child.right == None:
parent.left = None
return
if child.left == None:
parent.left = child.right
child = None
return
if child.right == None:
parent.left = child.left
child = None
return
left_most = child
while left_most.left != None:
second_left = left_most
left_most = left_most.left
child.data = left_most.data
second_left = None
return
parent = child
else:
child = parent.right
if child and child.data == data:
if child.left == None and child.right == None:
parent.right = None
return
if child.left == None:
parent.right = child.right
child = None
return
if child.right == None:
parent.right = child.left
child = None
return
left_most = child
while left_most.left != None:
second_left = left_most
left_most = left_most.left
child.data = left_most.data
second_left = None
return
parent = child
いくつかのサンプル入力を行い、実際の出力と期待する出力との比較を教えてください。 – JacobIRR
これはどのタイプのツリーですか? AVRバイナリ検索? min_heap? max_heap? –
サンプルの入出力を追加しました。うまくいけば、それは少し良く説明します。 – alienmode