| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > помогите создать бинарное дерево (4 указателя) |
| Автор: Podarochek 11.3.2008, 00:14 |
| как создать бинарное дерево понятно...=> struct tree{ int Key;//полезные данные (ключ) tree *Left, *Right;//ссылки на сыновей }; tree* MakeTree (tree*Tree,int data[], int &from, int n) { int n1, n2; if ( n == 0 ) return NULL;//ограничение рекурсии Tree = new tree;//выделить память под вершину Tree->Key = data[from++];//записать данные и перейти к следующему элементу n1 = n / 2;//размеры левого n2 = n - n1 - 1;//и правого поддеревьев Tree->Left = MakeTree(Tree,data, from, n1); Tree->Right = MakeTree(Tree,data, from, n2); return Tree; } вопрос как создать дерево с четырмя указателями??? что-то не идет...:( struct tree { int val; tree *p[4]; // Массив указателей на элементы структур данных }; |
| Автор: bsa 11.3.2008, 00:30 |
| передавать массивы да еще и в рекурсивных функциях очень неблагодарное занятие. Передавай лучше указатель: tree* MakeTree (tree*Tree, const int *data, int &from, int n) |
| Автор: andrew_121 11.3.2008, 00:46 |
| Podarochek, что-то я не очень понимаю - ЗАЧЕМ 4-ри ??? |
| Автор: andrew_121 11.3.2008, 01:00 |
| У узла два указателя - на сыновей, а еще два на что должны указывать ??? Я думаю это возможно, но с какой целью, и что из этого получиться, бинарное дерево или мутант, какой-то... Читай: http://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE |
| Автор: Podarochek 11.3.2008, 01:05 | ||
|
| Автор: korian 11.3.2008, 03:46 | ||
если я правильно понял...
|
| Автор: Mayk 11.3.2008, 06:42 | ||
Вообще это передача указателя а не ссылки. ЕМНИП это не менялось со времён форка от си.
Например на родителя. Podarochek, заменил бы массив на std::vector<tree*> сразу |
| Автор: Podarochek 11.3.2008, 16:07 | ||
имеется ввиду ссылка как неявный указатель, поскольку никто в определении не указывал явно *..., а так согласен что передается указатель на начало массива... korian - ОГРОМНОЕ СПАСИБО!!!! ПОНЯЛ ПРАВИЛЬНО!!! |