Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обход двоичного дерева (сортировка)

6.5K
02 февраля 2004 года
unavailable
2 / / 02.02.2004
Q1:
Есть : двоичное дерево применительно к сортировке массива

Задача : обойти узлы по схеме <левый сосед -> родитель -> правый сосед> для получения отсортированного массива, соотв.

Хочется: алгоритм в псевдокоде или блок-схема (или сам код) для реализации такого обхода.

Q2:
Есть : текст программы на C\C++

Задача : собрать статистику по всем переменным, вывести их типы

Хочется: быстро определять тип переменной по ее имени.

Спасибо.
348
02 февраля 2004 года
Saris
389 / / 14.03.2003
Цитата:
Originally posted by unavailable
Q1:
Есть : двоичное дерево применительно к сортировке массива

Задача : обойти узлы по схеме <левый сосед -> родитель -> правый сосед> для получения отсортированного массива, соотв.

Хочется: алгоритм в псевдокоде или блок-схема (или сам код) для реализации такого обхода.

Q2:
Есть : текст программы на C\C++

Задача : собрать статистику по всем переменным, вывести их типы

Хочется: быстро определять тип переменной по ее имени.

Спасибо.



1. Посмотри здесь:
http://alglib.manual.ru/sorting/heapsort.php

6.5K
09 февраля 2004 года
unavailable
2 / / 02.02.2004
Цитата:
Originally posted by Saris


1. Посмотри здесь:
http://alglib.manual.ru/sorting/heapsort.php



1. Хм, а тут условие, что дерево обладает свойством "любой предок больше потомка"; я так понял это когда для каждого узла выполняется условие того что все узлы в его поддереве меньше него (или равны) - а у меня дерево таким свойством не обладает.

247
09 февраля 2004 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by unavailable


1. Хм, а тут условие, что дерево обладает свойством "любой предок больше потомка"; я так понял это когда для каждого узла выполняется условие того что все узлы в его поддереве меньше него (или равны) - а у меня дерево таким свойством не обладает.


Когда ты сортируешь массив, он состоит из отсортированной части(дерево) и неотсортированной.
Берёшь первый элемент из неотсортированной части, и вставляешь в "дерево", пока не кончатся ноехваченные элементы.

460
09 февраля 2004 года
Berg
261 / / 27.03.2003
Цитата:
Originally posted by wanja

Когда ты сортируешь массив, он состоит из отсортированной части(дерево) и неотсортированной.
Берёшь первый элемент из неотсортированной части, и вставляешь в "дерево", пока не кончатся ноехваченные элементы.



Судя по всему это "лабораторка". Так вот: чтобы отсортировать массив методом бинарной сортировки (так кажется), тебе нужно создавать именно дерево двоичного поиска (а в нем "любой предок больше потомка").

А алгоритм в псевдокоде при таком раскладе выглядел бы типа такого:
void recurs(TTreeNode *node)
{
if (node) {
recurs(node->left);
output(node->field);
recurs(node->right);
}
}

P.S. Почитай Кнута, Вирта и т.п.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог