2017-05-02 4 views
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 
+0

いくつかのサンプル入力を行い、実際の出力と期待する出力との比較を教えてください。 – JacobIRR

+0

これはどのタイプのツリーですか? AVRバイナリ検索? min_heap? max_heap? –

+0

サンプルの入出力を追加しました。うまくいけば、それは少し良く説明します。 – alienmode

答えて

1

宿題の割り当てこの質問は、削除の実行方法を示すウェブページへのリンクから得られます。たぶんあなたはあなたの質問に答えられるように課題全体を投稿するべきです。

関連する問題