Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80

Нарисовать дерево в консоли

10.01.2022, 23:14. Показов 1324. Ответов 3
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени господа! У меня такой вопрос, по тому что в инете не могу нечего найти!
Помогите с решением плиз...
Дано задание нарисовать дерево в консоли, код есть:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Node root = new Node("100");
        Node child1 = new Node("[50]");
        Node level1a = new Node("(20)");
        Node level1b = new Node("(20)");
        Node level1c = new Node("(10)");
        Node level1d = new Node("(10)");
        Node level1e = new Node("(5)");
        Node level1f = new Node("(5)");
 
        root.add(child1);
        child1.add(level1a);
        level1a.add(level1c);
        level1a.add(level1d);
        child1.add(level1b);
        level1b.add(level1e);
        level1b.add(level1f);
 
        Node child2 = new Node("[50]");
        Node level2a = new Node("(20)");
        Node level2b = new Node("(20)");
        Node level2c = new Node("(10)");
        Node level2d = new Node("(10)");
        Node level2e = new Node("(5)");
        Node level2f = new Node("(5)");
 
        root.add(child2);
        child2.add(level2a);
        level2a.add(level2c);
        level2a.add(level2d);
        child2.add(level2b);
        level2b.add(level2e);
        level2b.add(level2f);
И метод который отображает в консоли в ряд через уровень:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public void print(int lv) {
        for (int i = 0; i < lv; i++)
            System.out.print(" ");
 
        System.out.println(this.name);
 
        for (int j = 0; j < this.children.size(); j++) {
            Node a = (Node) this.children.get(j);
            a.print(lv + 4);
 
        }
    }
Но как сделать так чтоб было похоже на это:

Code
1
2
3
4
5
6
7
8
/*            100
          /          \
         50           50
        /   \       /    \
       20    20    20    20
       /\    /\    /\    /\
      10 10  5 5  10 10  5 5
 */
Помогите решить эту задачу! По тому что уже не знаю что делать...

Добавлено через 1 минуту
и первоначально нужны такие поля:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private final String name;
    private List children;
 
    public Node(String name) {
        this.name = name;
        this.children = new ArrayList();
    }
 
    public Node(String name, ArrayList c) {
        this.name = name;
        this.children = c;
    }
 
    public void add(Node a) {
        this.children.add(a);
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2022, 23:14
Ответы с готовыми решениями:

TreeNode
Имеется несколько элементов TreeNode. Как получит эти элементы(Корни)? Пробовал с помощью TreeNodeCollection, че то не получилось(ошибку...

TreeNode в WPF
Привет всем. Помогите пожалуйста с проблемой. Есть программа написаная в Windows Application, нужно перейти на WPF, для этого нужен...

Свойство TreeNode
нужно по смене узла в дереве (treenode) в процедуре onChange определить свойство обведенное на картинке... не могу понять что это за...

3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,705
Записей в блоге: 14
11.01.2022, 13:11
По горизонтали пойдет?
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
11.01.2022, 14:28  [ТС]
Спасибо, можно й так, главное что бы было похоже на структуру)
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
11.01.2022, 21:13  [ТС]
Подскажите, как вызвать рекурсию с этого метода:

Java
1
2
3
4
5
6
7
8
9
public void insert(Node newNode, String parentName) {
        for (int i = 0; i < this.children.size(); i++) {
            Node a = (Node) this.children.get(i);
            if (parentName.equals(a.name)) {
                a.add(newNode);
                break;
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2022, 21:13
Помогаю со студенческими работами здесь

Enable у treenode C#
Как отметить узел дерева, как не активный?

Недоразумение с TreeNode
Такая проблема, мне нужно сделать так, что когда пользователь выбирает в treeview какой-либо нод, при выборе должен зафиксировать нод. При...

Редактирование Элементов TreeNode
Здравствуйте.В форме есть элемент TreeNode - раскрывающийся список. Подскажите как можно организовать в программе удаление элементов...

Динамическое добавление treenode
public static bool getOrder(ref TreeNode tn) { List&lt;DateTime&gt; bufDateTime=new List&lt;DateTime&gt;(); ...

Переименование TreeNode даблкликом
Есть TreeView, в который button1 добавляет ноды. Надо сделать так, чтобы по двойному клику или в контекстном меню можно было переименовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru