Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 26

Конструктор дерева (не бинарного). Или как вообще правильно строить дерево?

11.11.2011, 23:40. Показов 1937. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу разобраться с деревьями, да что только не читал, не пересматривал - не могу разобраться.
Для примера - хочу построить дерево такого типа


Вот так себе я представлял его

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
class Tree       
      {
      public:
       char id;
       char data;
       char dzieci[100];
       };
...
 
Tree root,t2,...;
 
root.id='root';
root.data='001';
root.dzieci[0]='t2';
root.dzieci[1]='t3';
root.dzieci[2]='t4';
root.dzieci[3]='0';
 
t2.id='t2';
t2.data='002';
t2.dzieci[0]='t12';
t2.dzieci[1]='t11';
t2.dzieci[2]='t10';
t2.dzieci[3]='0';
И ещё вот так себе представлял конструктор дерева

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
//Konstruktor drzewa
 
char id='';
char imie;
char data='';
int ile=0;
char dzieci[ile];
 
 
cout<< "Imie wenzel: ";
cin>>imie;
Tree imie;
imie.id=emie
cout<<endl<< "Sklad wenzla: ";
cin>>imie.data;
 
    do
    {
        cout<<endl<< "Ile jest dzieci: ";
        cin>>ile;
        cout<<endl<< "Imie dzieci (z lewo na prawo): "<<endl;
        for (int i=0; i<sizeof(imie.dzieci[ile]); i++)
           {
            cout<<"Dziecko " << i <<": "<<endl;
            cin>> imie.dzieci[i];
           }
    }
    while (ile!=0);
Да, это всё неправильно (ну потому что не работает ).
Но я просто не знаю как, и ничего нормальнообясняющего немогу найти.
Подскажите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2011, 23:40
Ответы с готовыми решениями:

Конструктор копирования для бинарного дерева
Какой надо совершать обход

Дерево: Как правильно удалить все узлы дерева?
Как правильно удалить все узлы дерева?

Удаление элементов из бинарного дерева (не дерево поиска)
Задание заключается в создании бинарного дерева, из букв введенной строки, обходе дерева и удалении согласных букв из дерева. проблема...

6
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 00:53
Дерево бинарное, тренарное (как на рисунке) или m-арное?

И для чего Вам дерево? Почитайте про деревья поиска. Можно начать с Википедии с Двоичного дерева поиска
0
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 26
12.11.2011, 00:57  [ТС]
Дерево m-арное. Рисунок, это просто пример я нарисовал на котором пробую разобраться.
Нужно это для проекта по учебе, точнее тема проекта - поиск дерева в глубину (m-арного). Но сначала я хотел разобраться как вообще построить дерево, а потом уже думать как в нём искать. вот.
0
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 01:06
C++
1
2
3
4
5
6
7
8
9
10
struct node{
int k;
int ** node;
};
 
class tree{
node * begin;
size m;
tree(int Size):size(Size){begin = 0;}
};
m-арное дерево. Надо добавить добавление элемента, поиск и деструктор. Я Вам настоятельно советую почитать про деревья поиска.
1
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 26
12.11.2011, 01:20  [ТС]
а можете посоветовать литературу, потому что в поиске только везде бинарные деревья, а это же совсем другое?
0
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 01:34
Они по аналогии. У бинарного m = 2; И вместо массива next объявляются только 2 указателя. Я сам кстати нигде не встречал таких структур. Из m-арных я только знаю B-деревья. Возможно у Сэджвика есть.
1
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 26
12.11.2011, 23:29  [ТС]
Вот что написал, в чем ошибки мои (то есть оно работает, но чувствую что не так)



Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char data[25]; 
  
struct list  
{ 
 char imien[25]; 
 int id[20]; 
}; 
 
class tree_node       
      { 
      public: 
       char data; 
       list dzieci(char imien, int id); 
       };

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main(int argc, char *argv[]) 
{ 
 
tree_node root; 
 
root.data='a'; 
root.dzieci('t002',1); 
root.dzieci('t003',2); 
root.dzieci('t004',3); 
 
tree_node t002; 
 
t002.data='b'; 
t002.dzieci('t010',1); 
t002.dzieci('t011',2); 
t002.dzieci('t012',3); 
 
tree_node t003; 
 
t003.data='c'; 
t003.dzieci(' ',1);
ПРавильно ли я двигаюсь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2011, 23:29
Помогаю со студенческими работами здесь

Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
Привет всем! Мне надо в курсовой работе написать программу, которая строит бинарное дерево (по вводимым значениям) и потом обходит это...

Построить дерево бинарного поиска и найти для него сумму нечетных значений узлов дерева
Ни как не могу придумать правильный метод который будет считать сумму нечетных значений узлов дерева. Помогите пожалуйста! using...

Написать программу, которая создает бинарное дерево, состоящее из целых чисел, печатает все числа бинарного дерева
Написать программу, которая создает бинарное дерево, состоящее из целых чисел, печатает все числа бинарного дерева, находит в бинарном...

Как по пути строить дерево TreeView?
есть код который создает файл с путями public static void FoldersToFile(string folder, string fileResult) { TextWriter tw =...

Реализация списка или бинарного дерева
Здравствуйте. Подскажите пожалуйста, как правильно реализовать список или бинарное дерево на шарпе, используя классы. Интересует, что будет...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru