удалить метод в Java BST

голоса
1

У меня есть вопрос Hw ... Я должен написать метод вынимается для бинарного дерева поиска, до сих пор, что у меня есть ниже, но я получаю кучу ошибок, связанные с моим методом удалить, и я не знаю, почему. ..would кто-то пожалуйста, быть в состоянии проверить свой код. Спасибо. Я также пытался создать метод поиска, но у меня возникают некоторые проблемы с этим, а также ... то есть весь путь в нижней части моего кода удалить.

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 );
   }
 */
Задан 10/11/2009 в 00:16
источник пользователем
На других языках...                            


2 ответов

голоса
1

objявляется экземпляром Eне TreeNode383<E>поэтому он имеет не getLeft()или getRight()метод. И даже если это так, вы видите это неправильно.

А что это root? Я не могу видеть объявление для этого в любом месте.

Этот синтаксис не имеет смысла либо:

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

setRight() это метод не является полем (Java не имеет свойства, такие как C #) плюс вам нужен капитал «R» в названии.

Поэтому, возможно, что должно быть

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

то есть, если newDataбыло объявлено, что это не так .

Есть слишком много ошибок здесь, чтобы иметь смысл вашего кода. Попробуйте реализации одной функции одновременно.

Ответил 10/11/2009 в 00:26
источник пользователем

голоса
0

ya..there некоторые ошибки ... в основном, для удаления узла N из BST, заменить N с минимальным элементом в правом поддереве N.

Ответил 14/01/2011 в 13:12
источник пользователем

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