Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
2 / 2 / 1
Регистрация: 20.10.2015
Сообщений: 244

Поиск в бинарном дереве

06.02.2017, 18:30. Показов 3884. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается организовать поиск в бинарном дереве по значению, а не по ключу.
Использую дерево в качестве примера переводчика, то-есть я ввожу англ. слово - ищет русское слово, помогите исправить метод поиска
Класс бинарного дерева:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package lab4;
 
import com.sun.corba.se.impl.oa.poa.ActiveObjectMap.Key;
 
public class BinaryTree {
 
    Node root;
 
    public void addNode(int key, String eng, String rus) {
 
        // Создает новый узел и инициализирует его с помощью конструктора
        Node newNode = new Node(key, eng, rus);
        // Если корня нет то он присваивается
        if (root == null) {
            root = newNode;
        } else {
            // Установить корень как node
            // и следить за текущим нодом
            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 Node findNode(String eng) {
        // Начать с верхушки дерева
        Node focusNode = root;
        // Пока мы не нашли узел
        // Продолжать поиски
        while (focusNode.eng != eng) {
            int key = 0;
            // Если мы должны искать влево
            if (key < focusNode.key) {
                // Сдвиг фокуса узла к левому ребенку
                focusNode = focusNode.leftChild;
            } else {
                // Сдвиг фокуса узла к правому ребенку
                focusNode = focusNode.rightChild;
            }
            // Узел не найден
            if (focusNode == null)
                return null;
        }
        return focusNode;
    }
}
 
class Node {
    int key;
    String eng;
    String rus;
    Node leftChild;
    Node rightChild;
    
    Node(int key, String eng, String rus) {
        this.key = key;
        this.eng = eng;
        this.rus = rus;
    }
 
    public String toString() {
        return eng + " ----> " + rus;
        /*
         * return name + " has the key " + key + "\nLeft Child: " + leftChild +
         * "\nRight Child: " + rightChild + "\n";
         */
    }
}
Класс Main
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package lab4;
 
public class Main {
 
    public static void main(String[] args){
 
        BinaryTree theTree = new BinaryTree();
        theTree.addNode(1, "Apple", "Яблоко");
        theTree.addNode(2, "Dog", "Собака");
        theTree.addNode(3, "Cat", "Кошка");
        theTree.addNode(4, "Hat", "Шляпа");
        theTree.addNode(5, "Black", "Черный");
        theTree.addNode(6, "Player", "Игрок");
        
        System.out.println(theTree.findNode("Apple"));
    }
}
Заранее спасибо за помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2017, 18:30
Ответы с готовыми решениями:

Поиск точки в бинарном дереве
Как в этот метод добавить условие что если не найдено совпадений то вывести (0,0) private void contains(Node root, Point point) { ...

Поиск максимального суммы значений в бинарном дереве
Есть бинарное дерево, нужно найти максимальную сумму значений в нем. Используя при этом только лишь один цикл и без условий if. У меня...

Рекурсия в бинарном дереве поиска
public boolean add(E e) { if(this.root == null) { this.root = new Node(e, null) ; return true; } else { ...

1
2 / 2 / 1
Регистрация: 20.10.2015
Сообщений: 244
06.02.2017, 20:28  [ТС]
Весь проект
lab4.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2017, 20:28
Помогаю со студенческими работами здесь

Дайте источники по реализации remove в бинарном дереве
Через ссылки я всё написал. Задача - написать удаление элемента из дерева, используя реализацию на массивах. А желательно ещё и вставку...

Поиск элемента в дереве
Друзья я создал дерево, как написать метод чтобы он искал в моем дереве какой то допустим элемент, и если он будет то выводил...

Рекурсивный поиск в небинарном дереве
Добрый день! Есть задача реализовать класс, объектом которого является узел дерева (TreeNode). У него может быть множество сыновей...

Поиск в бинарном дереве
Составить рекурсивную функцию для определения первого элемента, у которого совпадают старшая и младшая цифры, в бинарном дереве.

Поиск в Бинарном Дереве!
Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. Вывести на экран все одинаковые элементы в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru