Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
M434F4k3R
Зарегистрирован: 13.05.2002 Сообщения: 2
|
Добавлено: Ср Июн 12 2002 14:26 Заголовок сообщения: Концевой обход двоичного дерева. (How to???) |
|
|
Пожалуйста, подкиньте нерекурсивную функцию концевого обхода дерева двоичного поиска. Прямой, обратный обход... С этим всё ясно, а вот концевой...
Дерево задано следующей простенькой структурой:
struct BinTree { unsigned Key; // значение ключа BinTree* Left; // указатель на левого потомка BinTree* Right; // указатель на правого потомка }
Единственный параметр функции - указатель на корень дерева. Скорее всего понадобится стек. Его описание можно не прилагать. Просто пишем push или pop где необходимо. Функцию желательно на C++ под дос или в крайнем случае BP7. Псевдокод - тоже хорошо.
Заранее благодарен. |
|
Вернуться к началу |
|
|
Дядя Вася
Зарегистрирован: 14.08.2002 Сообщения: 39 Откуда: Новосибирск
|
Добавлено: Вт Июн 18 2002 10:20 Заголовок сообщения: Re: Концевой обход двоичного дерева. (How to???) |
|
|
попробуй не стек использовать, а очередь ! применяя алгоритм обхода дерева в ширину push(root) while(очередь не пуста){ node = pop(); if (нету потомков) { че-нить делать} else{ push(node.left); push(node.right); } }
ну вот и все, если элементы надо иметь по порядку то в {че-нить делать} нужно элемент ложить в массив , вычисляя по положению в дереве, его адрес ... |
|
Вернуться к началу |
|
|
|