0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 38
1

Создать дерево на основе строкового массива

08.10.2018, 17:15. Показов 2055. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я пытаюсь создать дерево на основе строкового массива, однако перерыв все возможные сайты и тщетно перечитывая документацию уже 3 день не могу разобраться как все наладить. В массиве содержится путь к определенным файлам. Например вот:
C:\Users\Данил\Desktop\bot_code.txt
C:\Users\Данил\Desktop\hero.txt
C:\Users\Данил\Desktop\Java\Шилдт Герберт Java 8\src\ReadMe.txt
C:\Users\Данил\Desktop\Windscribe.txt
C:\Users\Данил\Desktop\Моё обучение\ReADME.txt
C:\Users\Данил\Desktop\Новый текстовый документ (2).txt
C:\Users\Данил\Desktop\Новый текстовый документ.txt

04
14
34
54
64
45
27
Также есть массив в котором каждой строке исходного массива соответствует количество символов "" в ней.(они отсортированы по возрастанию количества "").
Всё что получается у меня - это с помощью метода split() создать одномерное дерево, а это не подходит. К тому же одинаковые пути в нём дублируются.

Вопрос: как на основе этого грамотно построить дерево пути к файлам?? я не прошу готовый код, а лишь прошу подсказать путь к решению вопроса, который меня поставил в крайне затруднительное положение.
Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2018, 17:15
Ответы с готовыми решениями:

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

Бинарное дерево на основе массива
Всем привет. Начал изучать бинарное дерево на основе массива, нужна подсказка, я правильно начал...

Построить двоичное дерево на основе одномерного массива и реализовать его прямой обход
Здравствуйте, помогите решить такую задачу: Построить двоичное дерево на основе одномерного массива...

Методы индексирования на основе функции расстояния. Универсальное деление гиперплоскостями. Дерево биссектрис и МВ-дерево
Доброго времени суток. В поисках информации для курсовика жизнь занесла сюда :) Поделитесь...

7
Эксперт Java
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
08.10.2018, 17:45 2
Цитата Сообщение от Дэнил Посмотреть сообщение
одномерное дерево, а это не подходит
что такое одномерное дерево и почему оно не подходит?
0
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 38
08.10.2018, 18:13  [ТС] 3
Может я некорректно называю это, вот
Миниатюры
Создать дерево на основе строкового массива  
0
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 38
10.10.2018, 07:14  [ТС] 4
Здравствуйте, у меня есть массив путей к нужным файлам, мне на его основе нужно создать дерево, однако моё дерево все время создается некорректно, каждая ветка независимо от того дублирует она предыдущие или нет создается с самого начала и я совсем ничего не могу с этим поделать, прикрепляю кусок кода с деревом, помогите пожалуйста.


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
Arr = {
    C:\Users\Данил\Desktop\bot_code.txt ,
    C:\Users\Данил\Desktop\heroku passport.txt, 
    C:\Users\Данил\Desktop\Java\Шилдт Герберт Java 8\Java 8\src\ReadMe.txt, 
    C:\Users\Данил\Desktop\Windscribe.txt ,
    C:\Users\Данил\Desktop\Моё обучение\ReADME.txt, 
    C:\Users\Данил\Desktop\Новый текстовый документ.txt }
 
     DefaultMutableTreeNode root = new DefaultMutableTreeNode(Arr[0].substring(0, Arr[0].indexOf('\\')));
                int k = Arr[InfoArr[0][0]].indexOf('\\');
                DefaultMutableTreeNode changer = root;
 
                for (i = 0; i < Arr.length; i++) {
                    if (i > 0) {
                        DefaultMutableTreeNode file = new DefaultMutableTreeNode(Arr[InfoArr[i][0]].substring(Arr[InfoArr[i][0]].lastIndexOf('\\')));
                        changer.add(file);
                    }
                    changer = root;
                    for (int j = 0; j < InfoArr[i][1]; j++) {
                        DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(Arr[InfoArr[i][0]].substring(Arr[InfoArr[i][0]].indexOf(changer.toString()), Arr[InfoArr[i][0]].indexOf('\\', k)));
 
                        changer.add(childNode);
                        changer = childNode;
                        k = Arr[InfoArr[i][0]].indexOf('\\', k + 1);
                    }
                }
                treeModel = new DefaultTreeModel(root);
                tree = new JTree(treeModel);
 
                frame.add(tree);
                frame.add(new JScrollPane(tree));
 
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setTitle("Дерево");
                frame.pack();
                frame.setVisible(true);
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
10.10.2018, 19:49 5
кажись я понял, ты хочешь построить дерево типо


Код
         
                    C:
                 \Users
                 \Данил
                \Desktop
\bot_code.txt ,       \heroku passport.txt,
   (значение 4)              (значение 4)
Добавлено через 9 минут
короче муть какая то , тебе надо сделать внутренний статически клас Noda это будет типо ссылка , и она должна содержать в себе массив ссылок что-то типо коллекции например хешмапа , которая будет содержать String ключ и соответствующую ей ноду для более быстрой работы с массивами ты это зря затеял долго дякаться будешь

Добавлено через 4 минуты
смотри реализацию префиксного дерева
0
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 38
11.10.2018, 04:03  [ТС] 6
Да, именно это я и хочу, попробую сам, разумеется, но был бы рад получить готовый шаблон)))
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
11.10.2018, 06:52 7
в джаве есть готовая реализация префиксного дерева, но оно бъёт слово по букве, а тебе надо сплитить по разделам

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
import java.util.HashMap;
 
public class Trie {
    private Node root;
 
    Trie() {
        root = new Node();
    }
/**
* придумай метод вставки 
*/
    public void put(String key, Object element) {
        
        tempNode.addValue(element);
    }
//придумай метод получения
    public Object get(String key) {
        Object rsl = null;
        
    }
//вот примерно такая должна быть нода
    class Node {
        private final HashMap<String, Node> children = new HashMap<String, Node>();
        private Object value;
 
        void addValue(Object value) {
            this.value = value;
        }
 
        public Object getValue() {
            return value;
        }
 
        public HashMap<String, Node> getChildren() {
            return children;
        }
    }
}
0
0 / 0 / 0
Регистрация: 04.10.2018
Сообщений: 38
11.10.2018, 10:43  [ТС] 8
Благодарю)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2018, 10:43
Помогаю со студенческими работами здесь

Получение типа на основе строкового литерала
Добрый вечер, как можно красиво получить тип на основе строкового литерала? Foo&lt;...

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

Создать диаграмму на основе одномерного массива
Создать диаграмму на основе одномерного массива.

Создать генератор чисел на основе массива из 3 елементов
Нужно сделать генератор чисел на основе массива из 3 елементов. Например 000, 001, ... , 011, 012,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru