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

Проход в глубину дерева, для определения максимального уровня листа - C++

Восстановить пароль Регистрация
 
oinari
 Аватар для oinari
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 69
19.05.2011, 20:09     Проход в глубину дерева, для определения максимального уровня листа #1
Доброго времени суток.
Имеется глоб.переменные:
C++
1
2
int max_level(0); //будет хранить максимальный уровень листа для удаления его
Tree *delete_el;  //будет хранить ссылку на удаляемый лист
Также стр-ра дерева:
C++
1
2
3
4
5
6
7
8
9
struct Tree          //элемент дерева
{
    //число,уровень,кол-во сыновей данного элемента
    int number;
    int level;
    int sons;
    //и массив сыновей
    Tree **a_sons;
};
и ф-я:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void output(...)
{
    if(!pointer) return;
    else
    {
        //проход в глубину (рекурсивно)
                 ...
                //определение максимального уровня листа
        if(max_level < pointer->level && pointer->a_sons==0)
        {
            max_level = pointer->level;
            delete_el = pointer;           //запоминание указателя
        }  
        ...
    }
}
Проблема в том, что в условии if(...) ... в рекурсивном вызове ф-ии, значение переменной max_level хоть и присваивается (смотрел в отладке), но потом опять становится равным 0. Как этого избежать, что вообще можно сделать в этом случае...

Добавлено через 1 час 15 минут
ответ прост, передать переменную по ссылке
(сам спросил, сам ответил хд)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 20:09     Проход в глубину дерева, для определения максимального уровня листа
Посмотрите здесь:

C++ Массив. Программа для определения максимального подъема 100-километровой автотрассы.
Проверить монотонность убывания ширины уровня дерева C++
C++ Хитрый обход дерева в глубину
Написать функцию для определения максимального и минимального из чисел C++
C++ Поиск минимального листа дерева
Поиск значения минимального листа дерева/ошибка C++
C++ Функция удаления листа (или ветки) бинарного дерева
Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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