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

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

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

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

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

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

Ребята я создала две рекурсии PrintCatalog и Printtree (как их объединить в одной новой рекурсии printTree)
Код:
import java.util.*;

public class TreePrint {
    public static void main(String[] args) {

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

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

        video.addChild( "Terminator" );
        video.addChild( "Die Hard" );
        video.addChild( "Rocky" );
        music.addChild( "Eminem" );
        picture.addChild( "Picasso" );

        printCatalog(rootFolder);

    }

    private static <T> void printTree(Node<T> node) {
       ???????????????????????????????????????????
       ????????????????????????????????????????
        
    }
    
    private static <T> void printCatalog(Tree<T> rootFolder) {
        printNode( rootFolder, 0 );
        List<Node<T>> kids = rootFolder.getChildren();
        printTree(kids, 1 );
    }

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

  
    private static <T> void printNode(Node<T> kid, int level ) {
        
        for ( int i=0; i<level; i++ ) {
            System.out.print( "  " );
        }
        
        System.out.println(kid.getData());
    }
}


-----------------------
import java.util.List;


public class Tree<T> extends Node<T> {

    public Tree(T data) {
        
        super(data, null);
    }
}

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

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 Node<T> addChild(T nodeData) {
        
        Node<T> newNode = new Node<T>( nodeData, this );
        children.add( newNode );
        return newNode;
    }

  
    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;
    }
}
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 07:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А если голову хоть немного включить? Подумать, это не больно.
Что у вас делает первая функция?
Код:
Печатает корневой элемент.
Получает потомков и передает второй.
Что делает вторая?
Код:
Если переданный массив не пусть, печатает данные из узла и рекурсивно вызывает для потомков себя.
Что надо написать, чтобы объединить? В лоб:
Распечатать текущий узел. И вызвать себя же для потомков.

П.С. Вам бы что-нибудь по алгоритмам почитать, до языков. Там целые главы рассказывают и показывают про обход дерева...
p51x вне форума Ответить с цитированием
Старый 25.08.2018, 07:47   #3
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

не подскажите код?(
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 07:56   #4
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

Я попробовала написать( не получается
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 08:17   #5
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

Можете помочь объединить рекурсию пожалуйста(
я перепробывала всё не получается
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 08:38   #6
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Код вам никто не даст. Тут так не делают. По себе знаю. Максимум Гитхаб))))))))
Походу вас раскусили)) Хотите по скайпу пообщаться?)))))))))
KAMLS вне форума Ответить с цитированием
Старый 25.08.2018, 08:46   #7
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

я на курсах) здесь нету веба) могу только вечером по общ) помоги плиз с задачей)
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 09:00   #8
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Да тут подход такой. Думать и кодить надо самому. Можно спросить общее направление. Поинтересоваться логикой подхода к делу и т.п. Код никто не напишет. Где-то тут есть раздел фриланс.. или что-то такое. Короче - халявы нет. Мне лично как бы и не надо. Всю жизнь форумчане не будут помогать. Самому понять надо. Вот понять просить помочь - это да.
KAMLS вне форума Ответить с цитированием
Старый 25.08.2018, 09:04   #9
Nastya2018
Форумчанин
 
Регистрация: 24.07.2018
Сообщений: 133
По умолчанию

Я написала но у меня почему ничего не выводит(
Код:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import javax.swing.tree.TreeNode;

import java.util.*;

public class TreePrint {
    public static void main(String[] args) {

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

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

        video.addChild( "Terminator" );
        video.addChild( "Die Hard" );
        video.addChild( "Rocky" );
        music.addChild( "Eminem" );
        picture.addChild( "Picasso" );

        

    }

    private static <T> void printTree(Node<T> node, int level) {
        printNode(node, level);
        if (node.getChildren() != null){
            for (Node childNode: node.getChildren()) {
                printTree(childNode, level + 1);
            }
        }
    }

   
    private static <T> void printNode(Node<T> kid, int level ) {
    	
    	for ( int i=0; i<level; i++ ) {
    		System.out.print( "  " );
    	}
        
        System.out.println(kid.getData());
    }
}
Nastya2018 вне форума Ответить с цитированием
Старый 25.08.2018, 09:51   #10
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Тебе надо разобраться в каком именно месте проблема. Т.е. знать код полностью, как будто именно ты его и создала. логически и четко убежденно говорить по всей последовательности выполнения операций. Это делает то-то а это то-то и должно получиться то-то, но что-то ни хрена не получается. когда поймут что это написано тобой и ты стараешься, вот тогда в твою убежденность внесут коррективы. намёком, что и как надо изучить и понять, чтобы понять почему не работает))))
KAMLS вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Соединить воедино две программы romaric Паскаль, Turbo Pascal, PascalABC.NET 1 12.06.2015 16:27
Один роутер-две сети Ципихович Эндрю Свободное общение 7 30.04.2015 02:32
Как соединить два файла в один, созданные в блокноте разных форматов.(script) Programmist228 Помощь студентам 4 31.03.2015 16:31
Нужно соединить два кода в один cho_nado Помощь студентам 1 12.02.2013 19:34
Две даты, а праздник один ! Bustle Свободное общение 8 23.06.2011 01:47