|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
Бинарное дерево: обход дерева с ключами до искомого11.09.2013, 18:40. Показов 5580. Ответов 11
Метки нет (Все метки)
Доброго вечера всем! Нужна помощь, так как сама не знаю как реализовать задание. А оно звучит так: Нужно написать программу бинарного дерева(в консоли, или форме, не важно). Вершины этого дерева - какие-то слова, которые считываются с текстового файла. И как нам объяснили - У каждого слова(вершины) есть свой номер - ключ. Пользователь должен ввести какое-то слово из данных, и выводится обход этого дерева с ключами до искомого. Как-то так. Спасибо!
0
|
|
| 11.09.2013, 18:40 | |
|
Ответы с готовыми решениями:
11
Преобразовать идеальное бинарное дерево в бинарное дерево поиска Бинарное дерево. Обход в ширину
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 11.09.2013, 19:18 | |
|
Сформулируйте задачу четче.
Хотя я кажется понял, что от вас хотят, но все равно, если вы хотите решение, опишите задачу конкретнее.
0
|
|
|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
| 11.09.2013, 19:36 [ТС] | |
|
Постараюсь, точнее.
Есть бинарное дерево, так. У этого дерева как-то словесно названы вершины. и эти слова считываются с текстового файла. У каждого слова есть ключ - цифра(номер). Пользователь вводит слово, например яблоко. И программа показывает путь по дереву до этого слова, например вот так 1-2-3-4-5. я поняла так.
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 11.09.2013, 19:50 | |
|
Ну, как мне кажется не совсем.
Прочтите определение дерева. Двоичное дерево, это дерево у каждого элемента которого есть только два подэлемента и родитель. В качестве аналогии можно рассматривать дерево из чисел, либо подэлемент больше родителя и он помещается в правую ветку(1) либо меньше и он помещается в левую.(0) Из этого следует, что если вы получаете ключ из файла в десятичном представлении, то вам сначала нужно перевести его в двоичное и это будет путь. Далее побитово прочесть число и пройти по пути. Но это лишь мое понимание задачи, я не могу гарантировать то, что это и требуется. В конечном итоге я мог все усложнить. Добавлено через 3 минуты Можно конечно эти ключи просто хранить в дереве, тогда обход будет проще.
0
|
|
|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
| 11.09.2013, 19:57 [ТС] | |
|
может, конечно, имеется ввиду то, что как бы пронумерованы вершины просто, а из файла мы считываем слова и вставляем в вершины.
Я написала как объяснили. =(
0
|
|
|
Неадекват
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
|
||||||
| 11.09.2013, 20:07 | ||||||
|
Как то так. Проект прилагается.
1
|
||||||
|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
| 11.09.2013, 20:38 [ТС] | |
|
Спасибо! буду разбираться
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
||||||
| 11.09.2013, 20:49 | ||||||
|
Так как вы файл не предоставили, пришлось вот так вот сделать.
В общем логика проста, есть массив ключей и значений, в простонародье словарь, мы его загоняем в наше простое дерево, далее просим у пользователя ключ и ищем значение по ключу. Возможны ошибки, так как в 12 часов ночи я не очень-то продуктивен. ![]() Кликните здесь для просмотра всего текста
0
|
||||||
|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
| 11.09.2013, 20:53 [ТС] | |
|
так какая из программ верная? первая или вторая? =)
А если вам не сложно, можете добавит пояснения - комментарии. Спасибо вам)
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
||
| 12.09.2013, 06:16 | ||
![]() В моей реализации, класс node - это элемент дерева. Класс tree само дерево. Метод find осуществляет обход дерева и ищет ключ. Метод add добавляет в дерево элемент. В программе, сначала создаем исходные данные в словаре dic, Потом каждый элемент словаря добавляем в дерево. далее ждем от пользователя ключ. И ищем этот ключ.
0
|
||
|
25 / 0 / 0
Регистрация: 02.04.2012
Сообщений: 94
|
|
| 12.09.2013, 19:13 [ТС] | |
|
а какой обход? префиксный или инфиксный?
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 12.09.2013, 19:42 | |
|
префиксный
0
|
|
| 12.09.2013, 19:42 | |
|
Помогаю со студенческими работами здесь
12
Бинарное дерево: как происходит добавления элемента в дерево с двумя параметрами
Узнать, есть ли в Dictionary искомый ключ, если есть, то вернуть ссылку на экземпляр ключа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
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
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|