Java BST yöntemi kaldırma

oy
1

Ben daha ne altındadır ama benim kaldır yöntemiyle ilişkili hataların bir demet almaya devam ve neden emin değilim, bir hw sorum var ... Bir ikili arama ağacına yönelik bir kaldırma yöntemi yazmaya var. ..would birisi benim kodunu kontrol edebilmek ediniz. Teşekkür ederim. O tüm yol benim kaldır kodunun alt kısmında ... Ben de bir bulmak yöntemini oluşturmaya çalıştı ama bunun da bazı sorun yaşıyorum.

import java.util.*;

class TreeNode383<E extends Comparable> {

  private E data;

  private TreeNode383<E> left;

  private TreeNode383<E> right;

  private TreeNode383<E> parent;

  public TreeNode383( ) { left = right = parent = null; }

  public TreeNode383( E d, TreeNode383 <E> l, TreeNode383 <E> r,
                     TreeNode383 <E> p) {

    data = d;

    left = l;

    right = r;

    parent = p;

  }

  public  E getData( ) { return data; }

  public void setData(E d) { data = d; }

  public TreeNode383<E> getLeft( ) { return left; }

  public void setLeft(TreeNode383<E> l) { left = l; }

  public TreeNode383<E> getRight( ) { return right; }

  public void setRight(TreeNode383<E> r) { right = r; }

  public TreeNode383<E> getParent( ) { return parent; }

  public void setParent(TreeNode383<E> p) { parent = p; }


  public String toString( ) {

    String answer = ;

    if (left != null) answer += left.toString( );

    answer += data +  ;

    if (right != null) answer += right.toString( );

    return answer;
  }
}

**The start of my remove method**


  boolean remove (E obj)
  {

 if(root == obj)

 return false;


 //when deleting a leaf just delete it

 else if(obj.getleft == NULL && obj.getright == NULL)
  parent = obj = NULL;


 //when deleting an interior node with 1 child
 //replace that node with the child

 else if(obj.getleft == NULL && obj.getright != NULL)
 obj.setright = new TreeNode383<E>(newData, null, null, null);

 else if(obj.getleft != NULL && obj.getright == NULL
 obj.setleft = new TreeNode383<E>(newData, null, null, null);


 //when deleting an interior node with 2 children
 //find left most node in right subtree,
 //promote it to replace the deleted node
 //promote its child to replace where it was



  /*
  private BinaryNode findMin( BinaryNode t )
  {
      if( t == null )
            return null;
      else if( t.left == null )
           return t;
      return findMin( t.left );
   }
 */
Oluştur 10/11/2009 saat 00:16
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
1

objbir örneğidir Eolmayan TreeNode383<E>hiçbir sahip çok getLeft()ya da getRight()yöntem. Yaptım bile, sen yanlış yazmışsın.

Ve ne root? O her yerde bir deklarasyon göremez.

Bu sözdizimi hiçbir anlam ya yapar:

obj.setright = new TreeNode383<E>(newData, null, null, null);

setRight() Bir yöntem değildir bir alandır (Java C # gibi özelliklere sahip değildir) Artı adına büyük 'R' gerekir.

Yani belki o olmalı

obj.setRight(new TreeNode383<E>(newData, null, null, null));

yani eğer newDataki değil, ilan edildi.

Kodunuzun mantıklı Burada çok fazla hatalar var. her seferinde bir fonksiyon uygulamayı deneyebilirsiniz.

Cevap 10/11/2009 saat 00:26
kaynak kullanıcı

oy
0

bazı hatalar N. sağ alt ağaç minimum eleman ile N yerine, bir BST bir düğüm N kaldırmak için, temelde ... ya..there vardır

Cevap 14/01/2011 saat 13:12
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more