2016-11-15 2 views
0

Итак, для класса I было поручено создать AVLTree, который может добавлять/удалять узлы и печатать все узлы особым образом. Я сделал это. Eveyrthing отлично работает на моем локальном компьютере. Однако, когда я загружаю код на сервер онлайн-отправки и проверяю его с помощью ввода командной строки; одна из моих функций перестает работать, и я надеялся, что кто-то сможет объяснить, почему.Удаление узла AVLTree

Вот мой основной метод на моем компьютере:

 AVLTree avl = new AVLTree(); 
     avl.insert(5, "earl"); 
     avl.insert(3, "colin"); 
     avl.insert(6, "fiona"); 
     avl.show(); 
     avl.insert(2, "bonnie"); 
     avl.insert(4, "danielle"); 
     avl.show(); 
     avl.insert(1, "alex"); 
     avl.show(); 
     avl.delete("bonnie"); 
     avl.delete("alex"); 
     avl.show(); 

Вот второй основной метод, который я использую для ввода командной строки

public static void main(String[] args) throws FileNotFoundException{ 
     Scanner input = new Scanner(new File(args[0])); 
     String name = new String(); 
     int key = 0; 
     AVLTree avl = new AVLTree(); 
     while (input.hasNext()) { 
      String opt = input.next().toUpperCase(); 
      switch(opt) 
      { 
       case "INSERT": 
        name = input.next(); 
        key = input.nextInt(); 
        avl.insert(key, name); 
        break; 
       case "REMOVE": 
           name = input.next(); 
         System.out.println("***" + avl.search(name));//this is where the problem is. On the server it returns null, on my computer it returns the correct node 
        avl.delete(name); 
        break; 
       case "SHOW": 
          avl.show(); 
          break; 
      } 

     } 
    } 


} 

Основной отличается от двух, потому что Я не использую командную строку на своем компьютере, поэтому я скопировал входной файл на компьютере и вручную ввел все.

Здесь входной файл

insert Earl 5 
insert Colin 3 
insert Fiona 6 
show 
insert Bonnie 2 
insert Danielle 4 
show 
insert Alex 1 
show 
remove Bonnie 
remove Alex 
show 

Наконец вот функции, необходимые для удаления узла.

Проблема заключается в том, что функция поиска не может найти узел на серверной версии, и я не могу понять, почему.

Кроме того, здесь есть выход

Local Version 
    earl 5 
     colin 3 
     fiona 6 
    earl 5 
     colin 3 
      bonnie 2 
      danielle 4 
     fiona 6 
    colin 3 
     bonnie 2 
      alex 1 
     earl 5 
      danielle 4 
      fiona 6 
    ***bonnie 2//the println statement for search 

    earl 5 
     colin 3 

Server Version 

Earl 5 
    Colin 3 
    Fiona 6 
Earl 5 
    Colin 3 
     Bonnie 2 
     Danielle 4 
    Fiona 6 
Colin 3 
    Bonnie 2 
     Alex 1 
    Earl 5 
     Danielle 4 
     Fiona 6 
***null//search println 
***null//search println 
Colin 3 
    Bonnie 2 
     Alex 1 
    Earl 5 
     Danielle 4 
     Fiona 6 

      danielle 4 
     fiona 6 

ответ

0

Мой профессор и я мог говорить на них, и мы нашли этот вопрос из-за различий в версии Java.

Мы просто изменили

if (name == node.name)

в

if (name.compareTo(node.name) == 0)

в методе binarySearch()

Смежные вопросы