Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 105

Распечатать бинарное дерево

25.07.2015, 21:36. Показов 6518. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!

Нужно решить задачу где дыны некоторые целочисленные числа, к примеру 3 5 4 2 8 и надо создать бинарное дерево данныx (binary Tree Building) первое число это корень дерева , то есть 3. Слева от корня ставится числа меньше 3 , в даном случаии только 2 а справа больше 3 то есть все остальные 5 4 8. С созданием дерева я разобрался получая таким образом

3 корень
слева 2 у которых нет ответлений
справа 5 от которого в лево у нас 4 а в справо 8
то есть получаетс такое дерево чисел : 2 (3) 4 5 8

Теперь основная задача состоит в том чтобы вывести эти данные в следующем формате: ((-,2,-),3,((-,4,-),5,(-,8,-)))

( (Левое крыло), корень, (Правое крыло) ) Левое и правое крыло дальше разбивется на компоненты пока не натыкаемся на узел у которого нет ответлений пример (-,2,-) и вместо ответлений так как их просто нет ставится линии.

Довел код до того что формирует Дерево чисел исходя из инпута (3 5 4 2 8) нужно просто создать метод в классе TreeBuilder и вызвать для вывода на консоль в выше указанном формате.


Перепробывал множестово идей в том числе и рекурсию но ничего в итоге не получилось.

Зарание спасибо
С ув, Я
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2015, 21:36
Ответы с готовыми решениями:

Бинарное дерево
Здравствуйте, в общем я написал программу которая строит бинарное дерево, но я не могу придумать как найти пути минимальной длинны между...

Бинарное дерево
Добрый день. Пишу аналог бинарного дерева, вот кусок кода public class Tree<T extends Comparable<T>> { private...

Бинарное дерево поиска
Я написала программу поиска минимума в массиве или среди элементов массива от i до j. В части запросов программа работает правильно, но...

4
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.07.2015, 22:10
VladV, покажите код. Решение должно быть рекурсивное. Что-то вроде

Java
1
2
3
4
5
6
7
8
    public String treeToString(Node root) {
        if(root == null) {
            return "-";
        }
        String leftSubTree = treeToString(root.getLeft());
        String rightSubTree = treeToString(root.getRight());
        return "(" + leftSubTree + root.getValue() + rightSubTree + ")";
    }
0
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 105
25.07.2015, 23:29  [ТС]
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.*;
public class BinaryTree1 {
   Node root;
 
    public void addNode(int key) {
        Node newNode = new Node(key);
            if (root == null) {
            root = newNode;
        } else {
            Node focusNode = root;
            Node parent;
 
                while (true) {
                parent = focusNode;
                if (key < focusNode.key) {
                        focusNode = focusNode.leftChild;
                    if (focusNode == null) {
                        parent.leftChild = newNode;
                        return; 
                    }
     
                } else { 
                        focusNode = focusNode.rightChild;
                        if (focusNode == null) {
                            parent.rightChild = newNode;
                        return; 
                        }
     
                  }
           }
        }
    }
        public void inOrderTraverseTree(Node focusNode) {
     
            if (focusNode != null) {
                inOrderTraverseTree(focusNode.leftChild);
                System.out.print(focusNode);
            inOrderTraverseTree(focusNode.rightChild);
            }
    }
         
    public static void main(String[] args) {
     
        BinaryTree1 theTree = new BinaryTree1();
        Scanner sc = new Scanner(System.in);
        int r = sc.nextInt();
        for(int i=0;i<r;i++){
            theTree.addNode(sc.nextInt());
        }
            theTree.inOrderTraverseTree(theTree.root);
            sc.close();
    }
} 
    class Node {
     
        int key;
    
        Node leftChild;
        Node rightChild;
 
        Node(int key) {
            this.key = key;
        }
     
        public String toString() {
     
            return " "+key;
    }
}
Добавлено через 2 минуты
Input будет такой
5
3 5 4 2 8

и вывод: 2 3 4 5 8 а нужно такой ((-,2,-),3,((-,4,-),5,(-,8,-)))

Добавлено через 1 час 2 минуты
Попробывал выше указанную рекурсию и не сработало
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.07.2015, 23:32
VladV, а что выводит?
0
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 105
25.07.2015, 23:52  [ТС]
KEKCoGEN - Большое спасибо ! В итоге разобрался и использывал ваш метод
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2015, 23:52
Помогаю со студенческими работами здесь

Как реализовать бинарное дерево?
Всем привет. Ребят подскажите как реализовать бинарное дерево (не дерево бинарного поиска, а именно БИНАРНОЕ ДЕРЕВО). Знаю как...

Бинарное дерево Удаление елемента
Как мне реализовать удаление елемента в бинарном дереве? Суть в тексте то понял. Удаление элемента без детей – просто освобождаем память....

Коллекция TreeSet и бинарное дерево
Всех приветствую Вопрос следующий: Как в бинарное дерево попадает число, если TreeSet не использует hashCode() ? На основании чего...

Бинарное дерево
Задание: Implement Binary Tree and write unit tests for the class. Use JUnit to create tests. Please, implement next methods: 1. ...

Бинарное дерево
Приветствую всех! Помогите, пожалуйста, разобрать, есть вот такая задача: &quot;Разработка класса для представления упорядоченного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru