Verwijder werkwijze java BST

stemmen
1

Ik heb wel een hw vraag ... Ik heb een remove methode voor een binaire zoekboom schrijven, tot nu toe wat ik heb is beneden, maar ik krijg steeds een hoop fouten in verband met mijn remove methode en ik weet niet zeker waarom. ..would iemand gelieve te zijn in staat om mijn code te controleren. Dank je. Ik heb ook geprobeerd om een ​​vondst methode te creëren, maar ik heb wat moeite met dat ook ... dat is helemaal aan de grond van mijn verwijderen code.

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 );
   }
 */
De vraag is gesteld op 10/11/2009 om 00:16
bron van user
In andere talen...                            


2 antwoorden

stemmen
1

objis een voorbeeld van Eniet TreeNode383<E>dus geen getLeft()of getRight()methode. En zelfs als het deed, je hebt het verkeerd gespeld.

En wat is er root? Ik kan een verklaring voor die ergens niet zien.

Deze syntaxis heeft geen zin ofwel:

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

setRight() is een methode geen veld (Java garandeert niet de eigenschappen zoals C # hebt) Plus u een hoofdletter R 'nodig in de naam.

Dus misschien dat zou moeten zijn

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

dat wil zeggen, als newDatawerd verklaard, wat het niet is.

Er zijn te veel fouten hier om gevoel van uw code te maken. Probeer de uitvoering van één functie tegelijk.

antwoordde op 10/11/2009 om 00:26
bron van user

stemmen
0

ya..there enkele fouten ... fundamenteel een knooppunt uit een N BST verwijderen, vervangen N het minimum element in de rechter deelboom N.

antwoordde op 14/01/2011 om 13:12
bron van user

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