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

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

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2018, 06:31   #1
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию Работа с Data

Как мне сделать AddChild c Data
Код:
/*
package treel;

import java.util.ArrayList;

import java.util.List;


import java.util.ArrayList;
import java.util.List;

public class Node<T> {

    private T data;
    private final List<Node<T>> children = new ArrayList<>();

    public Node(T data) {
        this.data = data;
    }

    public Node<T> addChild(Node<T> node) {
        children.add(node);
        return node;
    }

    public Node<T> addChild(T data) {   
        
        ????????????????????????????????????????????????????????????????
???????????????????????????????????????????
    }
    
    public List<Node<T>> iterate() {
        return children;
    }

    public void remove(Node<T> node) {
        children.remove(node);
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}
Код:
public class TreePrint {

    public static void main(String[] args) {

        Tree<String> rootFolder = new Tree<>("RootFolder");

        Node<String> rootNode = rootFolder.getRoot();
        
        Node<String> video = new Node<>("Video");
        Node<String> music = new Node<>("Music");
        Node<String> picture = new Node<>("Picture");
        
        rootNode.addChild(video);
        rootNode.addChild(music);
        rootNode.addChild(picture);

        video.addChild(new Node<>("Terminator"));
        video.addChild(new Node<>("Die Hard"));
        video.addChild(new Node<>("Rocky"));
        music.addChild(new Node<>("Eminem"));
        picture.addChild(new Node<>("Picasso"));
        
        
        
        Tree<String> rootFolder1 = new Tree<>("RootFolder1");
        
        
        printCatalog(rootFolder);

    }

    private static <T> void printCatalog(Tree<T> rootFolder) {
        printNode(rootFolder.getRoot());
        List<Node<T>> kids = rootFolder.iterate();
        printTree(kids);
    }

    private static <T> void printTree(List<Node<T>> kids) {
        if (kids.isEmpty()) {
            return;
        }
        for (Node<T> kid : kids) {
            printNode(kid);
            printTree(kid.getChildren());
        }
    }

    private static <T> void printNode(Node<T> kid) {
        System.out.println(kid.getData());

    }
}
Код:
class Tree<T> {

    private final Node<T> root;

    public Tree(T data) {
        root = new Node<>(data);
    }

    public Node getRoot() {
        return root;
    }

    public List<Node<T>> iterate() {
        return root.getChildren();
Nastya2018 вне форума Ответить с цитированием
Старый 24.08.2018, 11:05   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Настя, вы засыпали своими постами. Судя по коду вы до конца не понимаете, что у вас должно получиться.

Код:
private T data;
- это данные, которые хранятся в ноде?
Дерево состоит из нод?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.08.2018, 12:13   #3
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

я тут написала код и запустила дерево все работает, но мне сказали чтобы Addchild был с Data. Я написала код он правильный? как его в treeprint запустить?
Код:
/*

package tree;

import java.util.ArrayList;

import java.util.List;


import java.util.ArrayList;
import java.util.List;

public class Node<T> {

    private T data;
    private final List<Node<T>> children = new ArrayList<>();

    public Node(T data) {
        this.data = data;
    }

    public Node<T> addChild(Node<T> node) {
        children.add(node);
        return node;
    }

    public Node<T> addChild(T data) {   
        addChild(new Node<>(data));
        return null;
    }
    
    
    public List<Node<T>> iterate() {
        return children;
    }

    public void remove(Node<T> node) {
        children.remove(node);
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}
Код:
public class TreePrint {

    public static void main(String[] args) {

        Tree<String> rootFolder = new Tree<>("RootFolder");

         
        
        Node<String> rootNode = rootFolder.getRoot();
        
        Node<String> video = new Node<>("Video");
        Node<String> music = new Node<>("Music");
        Node<String> picture = new Node<>("Picture");
        
        rootNode.addChild(video);
        rootNode.addChild(music);
        rootNode.addChild(picture);

        video.addChild(new Node<>("Terminator"));
        video.addChild(new Node<>("Die Hard"));
        video.addChild(new Node<>("Rocky"));
        music.addChild(new Node<>("Eminem"));
        picture.addChild(new Node<>("Picasso"));
        
        
        
        Tree<String> rootFolder1 = new Tree<>("RootFolder1");
        
        
        printCatalog(rootFolder);

    }

    private static <T> void printCatalog(Tree<T> rootFolder) {
        printNode(rootFolder.getRoot());
        List<Node<T>> kids = rootFolder.iterate();
        printTree(kids);
    }

    private static <T> void printTree(List<Node<T>> kids) {
        if (kids.isEmpty()) {
            return;
        }
        for (Node<T> kid : kids) {
            printNode(kid);
            printTree(kid.getChildren());
        }
    }

    private static <T> void printNode(Node<T> kid) {
        System.out.println(kid.getData());

    }
}
Nastya2018 вне форума Ответить с цитированием
Старый 24.08.2018, 12:15   #4
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

есть roodnode от него идут ноды, просто я сделала это. Но мне сказали чтобы addchild был с data
Nastya2018 вне форума Ответить с цитированием
Старый 24.08.2018, 13:33   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Nastya2018 Посмотреть сообщение
Код:
public Node<T> addChild(T data) {   
        addChild(new Node<>(data));
        return null;
    }
Так нельзя

можно попробовать так:
Код:
public Node<T> addChild(T data) {   
        Node<T> node = new Node<>(data);
        children.add(node);
        return node;
    }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.08.2018, 13:37   #6
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

этот код не запускается полюбому где могут быть еще ошибки не подскажите?
Nastya2018 вне форума Ответить с цитированием
Старый 24.08.2018, 13:39   #7
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

правильно же все написала? но почему ошибки

Код:
/*


import java.util.ArrayList;

import java.util.List;


import java.util.ArrayList;
import java.util.List;


public class Node<T> {

    private T data;
    private final List<Node<T>> children = new ArrayList<>();
    private final Node<T> parent;

    public Node(T data, Node<T> parent) {
        this.data = data;
        this.parent = parent;
    }

    public void addChild(Node<T> node) {
        children.add(node);
    }
    

    public List<Node<T>> iterate() {
        return children;
    }

    public void remove(Node<T> node) {
        children.remove(node);
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public Node getParent() {
        return parent;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

---------------------


class Tree<T> {

    private final Node<T> root;

    public Tree(T data) {
        root = new Node<>(data);
    }

    public Node getRoot() {
        return root;
    }

    public List<Node<T>> iterate() {
        return root.getChildren();
 ----------------------
public class TreePrint {

    public static void main(String[] args) {

        Tree<String> rootFolder = new Tree<>("RootFolder");

         
        
        Node<String> rootNode = rootFolder.getRoot();
        
        Node<String> video = new Node<>("Video");
        Node<String> music = new Node<>("Music");
        Node<String> picture = new Node<>("Picture");
        
        rootNode.addChild(video);
        rootNode.addChild(music);
        rootNode.addChild(picture);

        video.addChild(new Node<>("Terminator"));
        video.addChild(new Node<>("Die Hard"));
        video.addChild(new Node<>("Rocky"));
        music.addChild(new Node<>("Eminem"));
        picture.addChild(new Node<>("Picasso"));
        
        
        
        Tree<String> rootFolder = new Tree<>("RootFolder1");
        
        
        printCatalog(rootFolder);

    }

    private static <T> void printCatalog(Tree<T> rootFolder) {
        printNode(rootFolder.getRoot());
        List<Node<T>> kids = rootFolder.iterate();
        printTree(kids);
    }

    private static <T> void printTree(List<Node<T>> kids) {
        if (kids.isEmpty()) {
            return;
        }
        for (Node<T> kid : kids) {
            printNode(kid);
            printTree(kid.getChildren());
        }
    }

    private static <T> void printNode(Node<T> kid) {
        System.out.println(kid.getData());

    }
}
Nastya2018 вне форума Ответить с цитированием
Старый 24.08.2018, 14:21   #8
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Если код скопирован как есть то обратите внимание на вот это место в классе Tree<T>
Код:
public List<Node<T>> iterate() {
        return root.getChildren();
 ----------------------
Вопрос: где закрывающая фигурная скобка?
ultimatet41 вне форума Ответить с цитированием
Старый 24.08.2018, 14:35   #9
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

когда копировала забыла
Nastya2018 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
missing data provider or data packet Dexes БД в Delphi 3 06.01.2012 11:58
Работа с сокетами (Socket.Data) SanekIrk Работа с сетью в Delphi 3 23.05.2010 16:12
Работа со временем без типа Data monty "2" Помощь студентам 7 31.03.2010 18:54
Data neas Помощь студентам 1 03.03.2008 16:26