Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/47: Рейтинг темы: голосов - 47, средняя оценка - 4.66
49 / 49 / 14
Регистрация: 08.04.2011
Сообщений: 124

Дерево

04.05.2011, 17:36. Показов 9420. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
Программа построения дерева, где узел(корень) - ФИО препода, а инф. поля (наверное левая\правая ветки) имеют записи: 1)должность(string[10]), 2)предметы что преподает. Написать процедуру печати построеного бинарного дерева(полная инфа про препода)

Кто нибудь знает как выполнить это задание, т.е. как в корень записать симв. строку, какие if 'ы и while'ы использовать, в какую часть дерева записывать записи?

В наличии имеються функции добавления первого введенного элемента в корень и ввода остальных узлов и вывода дерева print_tree ну и структура с *left, *right и
некоторым d что похоже есть num

Добавлено через 55 секунд
По структуре надо
C++
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
#include <iostream.h>
 
struct node
{
 int d;
 node *left;
 node *right;
};
node * first(int d);
node * search_insert(node *root, int d);
void print_tree(node *root, int l);
 
void main()
{
    int n, i, what;
    cout<<"input n \n";
    cin>>n;
    cout<<"input first what \n";
    cin>>what;
    node *root = first(what);
    for (i = 1; i<n; i++)
    {
    cout<<"input what \n";
    cin>>what;
    search_insert(root, what);
    }
    print_tree(root, 0);
 
}
 
node * first(int d)
{
    node *pv = new node;
    pv->d    = d;
    pv->left = 0;
    pv->right = 0;
    return pv;
}
 
node * search_insert(node *root, int d)
{
    node *pv = root, *prev;
    int found = 0;
    while (pv && !found){
       prev = pv;
       if   (d == pv->d) found = 1;
       else if  (d <  pv->d)pv     = pv->left;
       else         pv     = pv->right;
    }
    if (found) return pv;
    node *pnew  = new node;
    pnew->d     = d;
    pnew->left  = 0;
    pnew->right = 0;
    if (d < prev->d)
       prev->left  = pnew;
    else
       prev->right = pnew;
    return pnew;
}
 
void print_tree(node *p, int level)
{
    if (p)
    {
    print_tree(p->left, level+1);
    for (int i = 0; i<level; i++)
    cout << "    ";
    cout <<  p->d << endl;
    print_tree(p->right, level + 1);
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2011, 17:36
Ответы с готовыми решениями:

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

Дано дерево. Распечатать дерево по уровням
Дано дерево. Распечатать дерево по уровням.

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру. вот...

22
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
20.05.2011, 14:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от fasked Посмотреть сообщение
Метод size. Тут все просто, метод должен возвратить текущее количество элементов в дереве. Во всем дереве. Интересно, работает ли. Я не проверял, конечно, но закрадываются сомнения. Особенно с учетом того, что в самом TreeItem также лежит вектор. Я верю, что тут может быть хитрая схема индексации, но не доверяю.
не работал бы, если Tree состоял бы из TreeItem, но так как он у меня он состоит из TreeItem* то никаких проблем с этим нет. Да и проверить это легко

насчёт add - класс изначально писался таким образом, что не содержал в себе ничего. А в связи с тем что человеку нужно было засовывать структуры вот я и прикрутил шаблон. В комментариях к setValue я написал, что её нету, кому надо тот и допишет. Поэтому нет ничего удивительного в том, что add добавляет по индексу пустой элемент.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
20.05.2011, 14:32
Цитата Сообщение от pito211 Посмотреть сообщение
кому надо тот и допишет
Если по Вашему это так просто, реализовать бинарное дерево, наследуя его n-арного, то покажите как это. Может быть тогда у Вас и получится что-то доказать, пока что это только пустые слова.
0
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
20.05.2011, 14:37
Цитата Сообщение от fasked Посмотреть сообщение
Метод size. Тут все просто, метод должен возвратить текущее количество элементов в дереве. Во всем дереве. Интересно, работает ли. Я не проверял, конечно, но закрадываются сомнения. Особенно с учетом того, что в самом TreeItem также лежит вектор. Я верю, что тут может быть хитрая схема индексации, но не доверяю.
не работал бы, если Tree состоял бы из TreeItem, но так как он у меня он состоит из TreeItem* то никаких проблем с этим нет. Да и проверить это легко

насчёт add - класс изначально писался таким образом, что не содержал в себе ничего. А в связи с тем что человеку нужно было засовывать структуры вот я и прикрутил шаблон. В комментариях к setValue я написал, что её нету, кому надо тот и допишет. Поэтому нет ничего удивительного в том, что add добавляет по индексу пустой элемент.

Добавлено через 32 секунды
и в моей библиотеке лежит такая версия size()

C++
1
2
3
4
size_type size() const
        {   // return length of sequence
        return (_Mysize);
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2011, 14:37

Напишите программу, которая бы читала дерево в формате (а) и затем печатала бы это дерево в формате (б).
Представление дерева: а) Д (Б (А, Ф (В,)), Е (,З (Ж, И))) б) Д Б А Ф ...

Дерево дерево, странное дерево
Нужна помощь в построении дерева. Задание таково: Вершина дерева содержит N целых значений и два указателя на потомков. Запись значений...

Дерево, бинарное дерево
Читаю про дерево и не до конца понимаю, а точнее понимаю, но вопрос в том, правильно ли я понимаю, надеюсь вы мне подскажите. Вот есть...

Дерево...
в общем есть дерево двоичного поиска, состоит из функций добавления, удаления, поиска, вывода, ф-ция, которая выводит размер дерева... К...

Дерево
Здравствуйте!Никак не могу разобраться с двумя заданиями. http://************/9924ty - задание 1 http://************/9924ys и вот к...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru