С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 27.12.2013
Сообщений: 94
1

Упорядоченное дерево, функция вставки нового узла

17.01.2014, 02:04. Показов 549. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!
Помогите закончить функцию вставки узла в дерево. дерево должно быть упорядоченно.
Для справки текст задания:
На входе получаем количество работников, затем количество работников, над которыми может шефствовать этот человек и его имя.
Вывод должен быть функцией postorder, соответственно в структуре должны быть указатели на отца и на таблицу детей.
Но что-то я не совсем понимаю функцию добавления. Попытка переделки из бинарного дерева выглядит так(извиняюсь, учусь в Польше, по большей части в комментариях всё обозначено):
C++ (Qt)
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <string.h>
 
using namespace std;
 
 
struct wezel //
{
  string imie; // имя работника
   wezel *ojciec,**synowie; // указатели к отцу и к таблице детей
   int liczba_synow, max_synow;
};
 
 
 
void add_wezel(string imie, int liczba_synow,wezel *&moje_drzewo, int &liczba_pracownikow) //функция добавления узла wezel - узел drzewo - дерево
{
    if (liczba_pracownikow==0) return;
    if(NULL==moje_drzewo)
    {
        moje_drzewo=new wezel;
        moje_drzewo->imie=imie;
        moje_drzewo->ojciec=NULL;
        moje_drzewo->max_synow=liczba_synow;
        moje_drzewo->liczba_synow = 0; // сколько сыновей у уже созданного узла
        moje_drzewo->synowie = new wezel*[moje_drzewo->max_synow];
        for(int i=0; i<moje_drzewo->max_synow; i++)
        {
            moje_drzewo->synowie[i]=NULL;
        }
 
        --liczba_pracownikow;
 
        cin>>liczba_synow;
        getline(cin, imie);
        getline(cin, imie);
        add_wezel(imie,liczba_synow,moje_drzewo,liczba_pracownikow);
    }
 
    else
         if (moje_drzewo->liczba_synow <  moje_drzewo->max_synow)
         {
             --liczba_pracownikow;
             wezel *tmp = new wezel;
             tmp->imie = imie;
             tmp->max_synow = liczba_synow;
             tmp->liczba_synow = 0;
             tmp->ojciec=moje_drzewo;
             moje_drzewo->synowie[0]=tmp;
             moje_drzewo->synowie[moje_drzewo->liczba_synow] = tmp;
 
             tmp->synowie = new wezel*[tmp->max_synow];
             for(int i=0; i<tmp->max_synow; i++)
             { tmp->synowie[i]=NULL;
             }
 
             ++moje_drzewo->liczba_synow;
             cin>>liczba_synow;
             getline(cin, imie);
             getline(cin, imie);
             add_wezel(imie,liczba_synow,moje_drzewo,liczba_pracownikow);
        }
 
        else
             {
             wezel *syn = new wezel;
             syn->imie = imie;
             syn->ojciec=moje_drzewo->synowie[moje_drzewo->liczba_synow];
             syn->liczba_synow = 0;
             syn->max_synow = liczba_synow;
             syn->ojciec=tmp;
             syn->synowie = new wezel*[liczba_synow];
             for(int i=0; i<syn->max_synow; i++)
             { syn->synowie[i]=NULL;
             }
             syn=tmp->synowie[tmp->liczba_synow];
             ++moje_drzewo->liczba_synow;
 
             cin>>liczba_synow;
             getline(cin, imie);
             getline(cin, imie);
             add_wezel(imie,liczba_synow,moje_drzewo,liczba_pracownikow);
 
 
            }
 
}
 
 
 
int main()
{
    string imie;
    int liczba_synow;
    int liczba_pracownikow;
    wezel *moje_drzewo=NULL;
 
   cin>>liczba_pracownikow;
   getline(cin, imie);
   getline(cin, imie);
   cin>>liczba_synow;
   add_wezel(imie,liczba_synow,moje_drzewo, liczba_pracownikow);
 
 
 
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2014, 02:04
Ответы с готовыми решениями:

Добавление нового узла в B-дерево
Пусть я добавляю в дерево некоторый узел, такой что он должен быть добавлен после элемента s. Но:...

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

Добавления нового узла в дерево XML файла
Еще раз приветствую, пытаюсь разобраться с &quot;linq to xml&quot;, на этот раз хотел бы спросить по данному...

Функция поиска с включением узла в бинарное дерево
Здравствуйте! Помогите, пожалуйста, написать функцию поиска с включением узла в бинарное дерево....

0
17.01.2014, 02:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2014, 02:04
Помогаю со студенческими работами здесь

Упорядоченное дерево
Здравствуйте! Прошу помощи в решении следующей задачи: Определите функцию (ordered Tree),...

Бинарное упорядоченное дерево
Прошу помощи ибо сам не чего не понимаю.Нужно реализовать бинарное дерево добавить и удалить...

Вставка в упорядоченное дерево
Промогите пожалуйста!!! Надо вставить элемент элемент в упорядоченное дерево. Дословно задание:...

Бинарное упорядоченное дерево
Всем привет. Никак не получается сделать программу с сайта(ссылка ниже). Делаю все, как указано, но...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru