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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 23
11.11.2011, 23:40     Конструктор дерева (не бинарного). Или как вообще правильно строить дерево? #1
Хочу разобраться с деревьями, да что только не читал, не пересматривал - не могу разобраться.
Для примера - хочу построить дерево такого типа
Конструктор дерева (не бинарного). Или как вообще правильно строить дерево?

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

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

C++ Кто обяснит как правильно строить циклы ставлю спасибо!
C++ Бинарное дерево. Обход бинарного дерева (симметрический, прямой и обратный)
C++ Построение бинарного дерева на основе не бинарного
C++ Определить длину бинарного(или произвольного) дерева
C++ Функция удаления листа (или ветки) бинарного дерева
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fom4ik
49 / 7 / 1
Регистрация: 07.11.2010
Сообщений: 52
12.11.2011, 00:53     Конструктор дерева (не бинарного). Или как вообще правильно строить дерево? #2
Дерево бинарное, тренарное (как на рисунке) или m-арное?

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

Написать шаблон бинарного дерева с функцией распечатки дерева C++
Как вывести все листья бинарного дерева? C++
C++ Удаление элементов из бинарного дерева (не дерево поиска)

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

Или воспользуйтесь поиском по форуму:
murzilka6002
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 23
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);
ПРавильно ли я двигаюсь?
Yandex
Объявления
12.11.2011, 23:29     Конструктор дерева (не бинарного). Или как вообще правильно строить дерево?
Ответ Создать тему
Опции темы

Текущее время: 20:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru