Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 24.08.2018, 07:31   #1
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 107
Репутация: -7
По умолчанию Работа с 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, 12:05   #2
Bugrimov
C/C++, Java
Профессионал
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Адрес: Москва
Сообщений: 1,617
Репутация: 703

skype: bugrimovjava
По умолчанию

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

Код:

private T data;

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

я тут написала код и запустила дерево все работает, но мне сказали чтобы 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, 13:15   #4
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 107
Репутация: -7
По умолчанию

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

Цитата:
Сообщение от 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, 14:37   #6
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 107
Репутация: -7
По умолчанию

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

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

Код:

/*


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, 15:21   #8
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Адрес: Спас-Деменск
Сообщений: 100
Репутация: 94
По умолчанию

Если код скопирован как есть то обратите внимание на вот это место в классе Tree<T>
Код:

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

Вопрос: где закрывающая фигурная скобка?
ultimatet41 вне форума   Ответить с цитированием
Старый 24.08.2018, 15:35   #9
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 107
Репутация: -7
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Data Scientist/Аналитик Big Data ksskurat Работа на постоянной основе - Вакансии 0 10.08.2016 14:39
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 17:26


23:18.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru