Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить листя из дерева, Дописать код, который удаляет листья 
:(
    Опции темы
Oxidous
Дата 16.5.2016, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.9.2015

Репутация: нет
Всего: нет



Всем доброго времени суток,

Ситуация такая: Дано вот такое несовсем понятное задание, но оно описано именно так, как я и выкладываю.

Дан код дерева, нужно закончить его редактировать, т.е. закончить удаление листка (только того значения, оставляя те листья, которые были внутри того листка).

Честно говоря, не понимаю задания, что конкретно нужно сделать? Я в Java не силён, а потому несовсем представляю, как можно реализовать удаление.

List.java:

Код

package derevo;
 
public class List {
 
    int znacenije;
    List left;
    List right;
    List roditel;
 
    public List(int l, List t) {
        znacenije = l;
        roditel = t;
    }
 
    public void dobavitList(int sk, List t) {
        if (sk > znacenije) {
            if (right != null) {
                right.dobavitList(sk, this.right);
            } else {
                right = new List(sk, t);
            }
        } else if (sk < znacenije) {
            if (left != null) {
                left.dobavitList(sk, this.left);
            } else {
                left = new List(sk, t);
            }
        }
    }
 
    public void printList(String tabas) {
        if (left != null) {
            left.printList(tabas + "\t");
        }
        System.out.println(tabas + " " + this.znacenije+" - "+((roditel!=null)?roditel.znacenije:0));
        if (right != null) {
            right.printList(tabas + "\t");
        }
    }
 
    public List find(int sk) {
        if (this.znacenije == sk) {
            return this;
        } else {
            if (sk > this.znacenije && right != null) {
                return right.find(sk);
            } else if (sk < this.znacenije && left != null) {
                return left.find(sk);
            }
        }
        return null;
    }
    
    @Override
    public String toString() {
        return "List{" + "znacenije=" + znacenije+" "+roditel.znacenije + '}';
    }
    
}


Derevce.java:

Код

package derevo;
 
public class Derevce {
 
    List verhushka;
 
    public void dobavitList(int sk) {
        if (verhushka != null) {
            verhushka.dobavitList(sk, verhushka);
        } else {
            verhushka = new List(sk, null);
        }
    }
 
    public void udalitList(int sk) {
        List sl = findList(sk);
        if (sl.right == null && sl.right == null) {
            if (sk > sl.roditel.znacenije) {
                sl.roditel.right = null;
            } else if (sk < sl.roditel.znacenije) {
                sl.roditel.left = null;
            }    
        }
        /*Здесь ещё нужно добавить код, который бы удалял и те листья, у которых есть подлистья (т.е. правую, левую либо обе ветки) */
    }
 
    public List findList(int sk) {
        if (verhushka != null) {
            return verhushka.find(sk);
        }
        return null;
    }
 
    public void pechatat() {
        if (verhushka != null) {
            verhushka.printList("");
        } else {
            System.out.println("Derevo pustoje");
        }
    }
}


PrimerDereva.java:

Код

package derevo;
 
 
public class PrimerDereva {
 
    public static void main(String[] args) {
        Derevce m = new Derevce();
        //m.spausdinti();
        m.dobavitList(4);
        m.dobavitList(2);
        m.dobavitList(3);
        m.dobavitList(1);
        m.dobavitList(6);
        m.dobavitList(9);
        m.dobavitList(19);
        m.pechatat();
        m.udalitList(19);
        m.pechatat();
        m.udalitList(2);
        m.pechatat();
        List a = m.findList(23);
        System.out.println(a);
    }
    
}

PM MAIL   Вверх
Oxidous
Дата 17.5.2016, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 24.9.2015

Репутация: нет
Всего: нет



Попробую иначе, как сам понимаю
Есть полное дерево, у которого начало (верхушка) с 4, всё то, что меньше 4 - идёт вверх, всё,что больше 4 - идёт вниз и так далее.
2-4: ветка номер 2, её "отец" номер 4, у неё есть дети - 1 и 3. Нужно, чтобы удалив ветку номер 2, удалилсь бы и её дети.
PM MAIL   Вверх
rodomod
Дата 19.5.2016, 15:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Выводим rodomod.txt в консоль ArrayList
Код

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
public class ArrList {

    public static void main(String[] args) {

        FileReader myFile = null;
        BufferedReader buff = null;
        String line = new String();
        ArrayList<Object> array = new ArrayList<>();
        
        try {
        myFile=new FileReader("E:\\rodomod.txt");
        buff = new BufferedReader(myFile);
        
        while ((line = buff.readLine()) != null) {

        System.out.println(line);

        char[] m  =line.toCharArray();
        
        for (int i = 0; i < m.length; i++) {
            array.add(m[i]);            
        }
     System.out.println();


        
        } // конец цикла while
        
        System.out.println(array);
        
        
        }catch (IOException e){
        e.printStackTrace();
        } finally {
        try{
        buff.close();
        myFile.close();
        }catch(IOException e1){
        e1.printStackTrace();
        }
        }

        } // конец метода main
        
}


Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.