fjerne metode i java BST

stemmer
1

Jeg har en hw spørsmål ... Jeg må skrive en remove metode for et binært søketre, så langt det jeg har er nedenfor, men jeg får en haug med feil i forbindelse med min remove-metoden, og jeg er ikke sikker på hvorfor. ..would noen vennligst kunne sjekke min kode. Takk skal du ha. Jeg har også prøvd å lage et funn metode, men jeg har noen problemer med det også ... det er helt på bunnen av mitt fjerne kode.

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 );
   }
 */
Publisert på 09/11/2009 klokken 23:16
kilden bruker
På andre språk...                            


2 svar

stemmer
1

objer et eksempel på Eikke TreeNode383<E>slik at det har ingen getLeft()eller getRight()metode. Og selv om det gjorde, spelt du det galt.

Og hva er root? Jeg kan ikke se en erklæring for det hvor som helst.

Denne syntaksen gir ingen mening enten:

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

setRight() er en metode ikke et felt (Java har ikke egenskaper som C #) Pluss at du trenger en kapital 'R' i navnet.

Så kanskje det bør være

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

det vil si, hvis newDatable erklært, som er det ikke.

Det er for mange feil her for å gjøre følelse av koden din. Prøv å implementere en funksjon om gangen.

Svarte 09/11/2009 kl. 23:26
kilden bruker

stemmer
0

ya..there er noen feil ... utgangspunktet, for å fjerne en node N fra et BST, erstatte N med minste elementet i høyre subtre av N.

Svarte 14/01/2011 kl. 12:12
kilden bruker

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