eltávolítás módszer java BST

szavazat
1

Van egy hw kérdés ... azt kell írni egy eltávolítás módszere bináris kereső fába, eddig amim van, az alábbiakban, de kapok egy csomó hibát jár az eltávolítás módját és nem vagyok benne biztos, hogy miért. ..would valaki kérem ellenőrizni tudja a kódomat. Köszönöm. Én is próbáltam létrehozni egy felfedezés módszer, de én némi baj azzal is ... ez egészen alján én eltávolítás kódot.

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 );
   }
 */
A kérdést 10/11/2009 00:16
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

objegy példánya a Enem TreeNode383<E>, így nincs getLeft(), vagy getRight()módszerrel. És ha mégis, akkor írta, hogy rossz.

És mi root? Nem látok egy nyilatkozatot, hogy sehol.

Ez a szintaxis nincs értelme sem:

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

setRight() olyan módszer, nem egy területen (Java nem rendelkezik tulajdonságokkal, mint a C #) Plusz van szüksége tőke „R” a neve.

Tehát lehet, hogy meg kell

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

azaz, ha newDatanyilvánították, ami nem az.

Túl sok hibát itt, hogy van értelme a kódot. Próbálja végrehajtási egy funkció egy időben.

Válaszolt 10/11/2009 00:26
a forrás felhasználó

szavazat
0

ya..there vannak hibák ... alapvetően, hogy eltávolít egy csomópontot N egy BST, cserélje N, azzal a minimális elem jobb részfáját N.

Válaszolt 14/01/2011 13:12
a forrás felhasználó

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