Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 19:50   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию условие для удаления узлов дерева [java]

Нужно придумать условие для удаления узлов дерева. Условие - студенты 3-го курса, которые родились летом. Реализацию удаления узлов я сделал, понимаю как сделать чтобы в условие у меня проверялось на какие студенты на 3 курсе, но не могу понять как реализовать 2ю часть условия - студенты родились летом. Кого интересует, почему резко поменял условие из предыдущих тем, потому что немного ошибся с вариантом задания. В программе за комментировал те моменты, которые меня интересуют. Помогите пожалуйста реализовать. Выкладываю свой код.

Код:
package btree;
import java.io.*;

public class BinaryTree {
....

      public boolean delete(int key) { //метод удаления узлов
          Node current = root;
          Node parent = root;
          boolean isLeft = true;

          if (current.course == "3" && current.dateofbirth == "") { // мое кривое условие удаления студентов 3-го курса, которые родились летом
              while(current.data != key) {
                  parent = current;
                  if(key < current.data) {
                      isLeft = true;
                      current = current.left;
                  }
                  else {
                  if(current == null) {
                    return false;
                    }
                  }
              }

              if(current.left == null && current.right == null) {
                  if (current == root)
                      root = null;

                   else if(isLeft)
                     parent.left = null;
                    else
                      parent.right = null;

              }

               else if (current.right == null)
                  if( current == root)
                      root = current.left;
                  else if(isLeft)
                      parent.left = current.left;
                  else
                      parent.right = current.right;

              else if(current.left == null)
                  if(current == root)
                      root = current.right;
                  else if(isLeft)
                      parent.left = current.right;
                  else
                      parent.right = current.right;

              else {
                  Node successor = getSuccessor(current);

                  if(current == root)
                      root = successor;
                  else if(isLeft)
                      parent.left = successor;
                  else
                      parent.right = successor;

                  successor.left = current.left;

              }
            
          }

          return true;

          


      }

      private Node getSuccessor(Node delNode)
      {
      Node successorParent = delNode;
      Node successor = delNode;
      Node current = delNode.right;
      while(current != null)
         {
         successorParent = successor;
         successor = current;
         current = current.left;
         }

      if(successor != delNode.right)
         {
         successorParent.left = successor.right;
         successor.right = delNode.right;
         }
      return successor;
      }

....

      
}

class bTreeApp {
    public static void main(String[] args ) {
        BinaryTree theTree = new BinaryTree();

        theTree.insert(1, "vasa", "pupkin", "3", "456987", "07.07.1991");
        theTree.insert(2, "ivan", "ivanov", "2", "789898", "09.04.1992");
        theTree.insert(4, "dima", "vengel", "3", "7896546", "09.06.1991");

        System.out.println("Список студентов:");

    }

}

class Node {
        Node left;
        Node right;
        int data;
        String name;
        String surname;
        String course;
        String ticket;
        String dateofbirth;
        public Node(int data, String name, String surname, String course, String ticket, String dateofbirth){
            this.data = data;
            this.name = name;
            this.surname = surname;
            this.course = course;
            this.ticket = ticket;
            this.dateofbirth = dateofbirth;
        }
  
}
ArniLand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
условие для удаления узлов дерева ArniLand Общие вопросы по Java, Java SE, Kotlin 0 23.09.2010 19:50
удаление узлов из дерева ArniLand Общие вопросы по Java, Java SE, Kotlin 0 22.09.2010 21:36
процедуры переворотов, добавления, удаления элемента.. для AVL дерева smalsvoloch Помощь студентам 0 03.12.2009 20:28
Сортировка узлов дерева treeview gool Общие вопросы Delphi 1 06.11.2009 09:20