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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Количество элементов массива http://www.cyberforum.ru/cpp-beginners/thread299834.html
Задача :в одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, меньших 0; 2) сумму целых частей элементов массива, расположенных после последнего...
C++ Описать процедуру RectPS Привет всем!!!Помогите перевести с паскаля на С++ Описать процедуру RectPS(x1, y1, x2, y2, S), вычисляющую площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1,... http://www.cyberforum.ru/cpp-beginners/thread299819.html
C++ Случайные четные числа
"Напишите единственный оператор, который будет печатать случайно выбранное число из набора: 2, 4, 6, 8. Как это реализовать? Для начала хотел просто сделать генератор "случайных" чисел от 2 до 8:...
Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах C++
2. Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах, изменения даты на заданное количество дней. Перегрузить операцию «–» для нахождения...
C++ Реализовать представление дека http://www.cyberforum.ru/cpp-beginners/thread299782.html
Реализовать представление дека на языке С++ . Работу со структурой организовать в виде текстового меню.
C++ Реализовать представление очереди. Реализовать представление очереди. Работу со структурами организовать в виде текстового меню. подробнее

Показать сообщение отдельно
oinari
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 69

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

19.05.2011, 20:09. Просмотров 841. Ответов 0
Метки (Все метки)

Доброго времени суток.
Имеется глоб.переменные:
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 минут
ответ прост, передать переменную по ссылке
(сам спросил, сам ответил хд)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru