Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 24
#1

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

11.11.2011, 23:40. Просмотров 1144. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2011, 23:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор дерева (не бинарного). Или как вообще правильно строить дерево? (C++):

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

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

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

Определить длину бинарного (или произвольного) дерева - C++
Определите длину бинарного(или произвольного) дерева (т.е. длину максимальной ветви) Visual studio c++, консольный режим. Можно пожаласт...

Функция удаления листа (или ветки) бинарного дерева - C++
Здравствуйте программисты! Учусь на первом курсе. Возникли проблемы с разработкой функции удаления ветки листа или корня из дерева. Т.е....

Кто обяснит как правильно строить циклы ставлю спасибо! - C++
Обидно мне читаю читаю а не понимаю циклы и не умею решать с ними задачи,прям серьездно обидно,обясните как их строить ветвления эти,как...

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

И для чего Вам дерево? Почитайте про деревья поиска. Можно начать с Википедии с Двоичного дерева поиска
0
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 24
12.11.2011, 00:57  [ТС] #3
Дерево m-арное. Рисунок, это просто пример я нарисовал на котором пробую разобраться.
Нужно это для проекта по учебе, точнее тема проекта - поиск дерева в глубину (m-арного). Но сначала я хотел разобраться как вообще построить дерево, а потом уже думать как в нём искать. вот.
0
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 01:06 #4
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
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 24
12.11.2011, 01:20  [ТС] #5
а можете посоветовать литературу, потому что в поиске только везде бинарные деревья, а это же совсем другое?
0
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 01:34 #6
Они по аналогии. У бинарного m = 2; И вместо массива next объявляются только 2 указателя. Я сам кстати нигде не встречал таких структур. Из m-арных я только знаю B-деревья. Возможно у Сэджвика есть.
1
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 24
12.11.2011, 23:29  [ТС] #7
Вот что написал, в чем ошибки мои (то есть оно работает, но чувствую что не так)



Код
char data[25]; 
  
struct list  
{ 
 char imien[25]; 
 int id[20]; 
}; 

class tree_node       
      { 
      public: 
       char data; 
       list dzieci(char imien, int id); 
       };

Код
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
12.11.2011, 23:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2011, 23:29
Привет! Вот еще темы с ответами:

Запись бинарного дерева в файл и восстановление из него этого дерева - C++
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на структуру с данными, 2 и 3й указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева - C++
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

Как осуществлять обход бинарного дерева? - C++
Хочу создать клас бинарное дерево, но не знаю чем это дерево я буду проходить, как двигатса от одного узла к дргому.(без создания...

Построение бинарного дерева на основе не бинарного - C++
В лабораторной работе есть такое задание: Создайте процедуру построения бинарного дерева на основе не бинарного. Объясните как вообще...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru