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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Количество элементов массива http://www.cyberforum.ru/cpp-beginners/thread299834.html
Задача :в одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество элементов массива, меньших 0; 2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента. Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом - все остальные. #include <stdio.h>...
C++ Описать процедуру RectPS Привет всем!!!Помогите перевести с паскаля на С++ Описать процедуру RectPS(x1, y1, x2, y2, S), вычисляющую площадь S прямоугольника со сторонами, параллельными осям координат, по координатам (x1, y1), (x2, y2) его противоположных вершин (x1, y1, x2, y2 — входные, S — выходные параметры вещественного типа). С помощью этой процедуры найти периметры и площади трех прямоугольников с данными... http://www.cyberforum.ru/cpp-beginners/thread299819.html
Массив кнопок, моделирующий шахматную доску Visual Basic .NET
Добрый день! Надо сформировать массив кнопок(например 8,8), моделирующий шахматную доску и расположить их в 8 строк и 8 столбцов. Соответственно к каждой кнопке массива нужно будет потом обращаться. P.S Не очень хорошо разбираюсь, т.к. начинающий. Я тут сделала, но не идет программка....где то ошиблась, либо целиком не так AddHandler Massive(7, 7).Click, AddressOf Button1_click Private...
C++ Случайные четные числа
"Напишите единственный оператор, который будет печатать случайно выбранное число из набора: 2, 4, 6, 8. Как это реализовать? Для начала хотел просто сделать генератор "случайных" чисел от 2 до 8: #include <iostream> using std::cout; using std::endl; #include <cstdlib> using std::rand;
C++ Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах http://www.cyberforum.ru/cpp-beginners/thread299793.html
2. Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах, изменения даты на заданное количество дней. Перегрузить операцию «–» для нахождения разности дат и операции сравнения. Для класса определить оператор <<. Стандартные функции и типы С для работы с датами не использовать. проблемы с вводом-выводом. Как исправить? ...
C++ Реализовать представление дека Реализовать представление дека на языке С++ . Работу со структурой организовать в виде текстового меню. подробнее

Показать сообщение отдельно
oinari
 Аватар для oinari
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 69
19.05.2011, 20:09     Проход в глубину дерева, для определения максимального уровня листа
Доброго времени суток.
Имеется глоб.переменные:
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 минут
ответ прост, передать переменную по ссылке
(сам спросил, сам ответил хд)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru