Форум программистов, компьютерный форум, киберфорум
Наши страницы

Java SE (J2SE)

Войти
Регистрация
Восстановить пароль
 
robert19
27 / 27 / 3
Регистрация: 26.03.2010
Сообщений: 305
#1

обход дерева, система дьюи - Java SE

20.10.2011, 22:21. Просмотров 605. Ответов 0
Метки нет (Все метки)

Вот есть дерево:
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
70
71
72
73
74
class Tree {
    public Tree right;          
    public Tree left;
    public int key;
 
    Tree(){
    }
    
    public Tree(int k) {        
        key = k;
    }
    public void add( Tree aTree) {
        if ( aTree.key > key )
            if ( right != null ) right.add( aTree );
            else right = aTree;
        else
            if ( left != null ) left.add( aTree );
            else left = aTree;
   }
    public void traverse() {
        if ( left != null) left.traverse();
        if ( right != null ) right.traverse();
        System.out.printf( " " + key );
    }
    
}
class TreeSort {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        Scanner string = new Scanner(System.in);
        boolean flags = true;
        Tree myTree;
        System.out.print("Введите корень: "); 
        int str = scanner.nextInt();
        myTree = new Tree(str);
        while(flags){
            System.out.println("\n1 - Заполнить дерево\n2 - Распечатать\n0 - Выход\n3 - Проба\n");
            System.out.print("Введите: ");
            str = scanner.nextInt();
            switch(str){
                case 1:{
                    boolean flag = false;
                    while(!flag){
                        System.out.print("Введите: ");
                        str = scanner.nextInt();
                        myTree.add(new Tree(str));
                        System.out.print("Продолжить?(y/n): ");
                        String strig = string.nextLine();
                        if("y".equals(strig))flag = false;
                        else flag = true;
                    }break;
                }
                case 2:{
                    myTree.traverse();
                    break;
                }
                case 0:{ 
                    flags = false;
                    break;
                }
                case 3:{
                    myTree.add(new Tree(7));
                    myTree.add(new Tree(5));
                    myTree.add(new Tree(14));
                    myTree.add(new Tree(16));
                    myTree.add(new Tree(20));
                    myTree.add(new Tree(17));
                    myTree.add(new Tree(10));
                    myTree.traverse();break;
                }
            }
        }
    }
}
Нужно что бы он выводило результат в таком виде:
1.1.1: 5 1.2.1.1: 10 1.1.2: 14 1.1: 7 1.2.1: 17 1.2.2: 20 1.2: 16 1: 15
и так нужно что бы для любого количества листьев. помогите плиз, времени мало, а придумать ниче не могу(((

Добавлено через 1 час 8 минут
Вот решил сделать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public void add( Tree aTree) {
        if ( aTree.key > key ){
            if ( right != null ) right.add( aTree );
            else {name = name + "2."; right = aTree;}
        }
        else{
            if ( left != null ) left.add( aTree );
            else {name = name + "1."; left = aTree;}
        }
   }
    public void traverse() {
        if ( left != null) left.traverse();
        if ( right != null ) right.traverse();
        System.out.printf("    " + name);
        System.out.printf("-" + key);
        
    }
но все равно что то не получается((

Добавлено через 41 минуту
Замутил)))))))
Java
1
2
3
4
5
6
7
8
9
10
    public void add( Tree aTree) {
        if ( aTree.key > key ){
            if ( right != null ) right.add( aTree );
            else {aTree.name = this.name + "2."; right = aTree;}
        }
        else{
            if ( left != null ) left.add( aTree );
            else {aTree.name = this.name + "1."; left = aTree;}
        }
   }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 22:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос обход дерева, система дьюи (Java SE):

Обход бинарного дерева - Java SE
Добрый день. Подскажите, как реализовать метод, который вернет список значений бинарного дерева в отсортированном порядке. class Node<T>...

Рекурсия и обход бинарного дерева - Java SE
Уже есть бинарное дерево. Надо вывести в консоль ключи в порядке возрастания. Методом тыка получилось, но я не поняла как работает. ...

Обратный обход бинарного дерева - Java SE
Проверьте плиз, правильно сделал обратный обход дерева: class Tree { public Tree right; public Tree left; ...

Прямой обход идеально-сбалансированного дерева - Java SE
Не могу найти глупую ошибку в логике. По заданию нужно прямым обходом по идеальносбалансированному дереву пройтись и вывести. Вот...

Операции над бинарными деревьями: построение дерева, обход дерева, вставка и удаление элемента дерева - Pascal
Пожалуйста кто сможет, помогите составить программу: Организация по трудоустройству населения сохраняет резюме клиентов в виде бинарного...

Построение бинарного дерева. Обход дерева - PascalABC.NET
Построить дерево поиска с элементами – числами. С использованием операций Locate и DeleteLeft найти узел с заданным значением и исключить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2011, 22:21
Привет! Вот еще темы с ответами:

обход дерева - C++
struct SAcson { int l,c; // строка, столбец float x; // заряд bool e; // возбуждающий или тормозящий }; struct SSinapc { ...

Обход дерева - C#
Узел дерева имеет поля: char letter; // символ int frequency; //частота вхождения в текст этого символа int code; // генерируемый код...

Обход дерева - C++
Всем доброе время суток. Не могу нормально обойти дерево и просмотреть введённое, по всей видимости, возможно я неправильно поставил...

Обход дерева - C++
Вот начал читать про деревья и способы их обхода (PreOrder, InOrder и PostOrder). С алгоритмами проблем нет, но видно, как бы это сказать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru