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

итератор для обхода по бинарному дереву - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Магический квадрат) http://www.cyberforum.ru/cpp-beginners/thread257425.html
Определить, является ли заданная квадратная матрица порядка n магическим квадратом, т.е. матрицей, у которой суммы элементов строк и столбцов одинаковы.
C++ Не хочет работать Rand Здравствуйте, при выполнении лабораторной работы столкнулся с некоторыми трудностями: При запуске программы она доходит до функции ran и останавливается #include <iostream> #include <stdlib.h> #include <conio.h> #include <time.h> using namespace std; void date(long **mas,int x, int y){ //a) http://www.cyberforum.ru/cpp-beginners/thread257422.html
табулирование функций C++
Составить программу для вычисления значений функции F(x) на отрезке с шагом h.Результат представить ввиде таблицы,первый столбец которой-значение аргумента, второй-соответствующее значение функции. F(x)=x sin x
C++ Изъятие информации в файле из скобок
Здравствуйте.Помогите пожайлуста. Нужно написать программу на C++ которая из файла .txt выводит на экран только то что написано внутри {} таких скобок.Внутри таких скобок есть еще кадратные скобки информация из которых должна переноситься на другую строку и пронумероваваться в соответствии с количеством скобок.С первым вроде как справился только вот длинно ну и вобщем не работает.
C++ Полустатика в с++ http://www.cyberforum.ru/cpp-beginners/thread257391.html
В универе задали полустатические структуры - стек, дек, очередь. описать описал, а дальше.... такие вопросы возникли: как проверить очередь на полноту? как добавлять и удалять элементы в этих структурах? поля, хранимые в структуре - чар и инт. если есть хорошая литература - дайте ссылку, а то нифига не найду. //--------------------------------------------------------------------- const...
C++ Простейшие циклы С Помогите ЛюДи !!!! в СрочНяк... дано натуральное число n. вычислить подробнее

Показать сообщение отдельно
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
14.03.2011, 22:28     итератор для обхода по бинарному дереву
Я, как-то делая n-арное дерево, тоже озаботился такой проблемой и решил в конечном счете делать так: у каждого узла есть указатель на родителя, первого и последнего сына( в твоем случае левого и правого ), и плюс к тому еще указатель на левого и правого брата ( то бишь для левого узла ссылка на левого в NULL, а на правого всё ок, ну и наоборот для правого узла ). Далее довольно просто реализовать паттерн прохода итератора (кстати, "нормальный" - значит стандартный обход в глубину?), у меня выходило что-то в стиле
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
template<typename T,typename __tree_node_allocator>
typename Tree<T,__tree_node_allocator>::pre_order_iterator& 
Tree<T,__tree_node_allocator>::pre_order_iterator::operator++()
    {
        // текущий узел - валидный
    assert(this->node != NULL);
        // если пропускать сыновей не надо и первый сын - валидный 
    if(!this->__skip_current_children && this->node->my_first_child != NULL)
        {
                // двигаем позицию итератора на сына
        this->node = this->node->my_first_child;
        }
    else
        {
                // делать нечего, только возвращаться назад по дереву
        this->__skip_current_children = false;
        while(this->node->my_next_sibling == NULL)
            {
            this->node = this->node->my_parent;
                        // если уже всё дерево пройдено, то возвращаем end
            if(this->node == NULL)
                return *this;
            }
                // если правая ветка есть, то лезем на неё
        this->node = this->node->my_next_sibling;
        }
    return *this;
    }
Но дерево фактически остается циклическим, так как конец в принципе прицеплен к голове, только разве что сам узел не валидный.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru