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

Найтисреднее арифметическое положительныхэлементов бинарного дерева - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Записать в строку все начальные совпадающие символы других строк http://www.cyberforum.ru/cpp-beginners/thread1754264.html
Даны две строки f и g. Записать в строку h все начальные совпадающие символы строк f и g. Мой быдлокод: #include <iostream> #include <cstring> using namespace std; int main() {
C++ Построить последовательность из элементов матрицы Знакомый попросил помочь, мол "Тыжпрограммист", а я в C++ не рублю. Задачи-то простые, алгоритм у них легкий, но есть проблемы с тонкостями языка. Дана действ. квадрат. матрица порядка n. Построить последовательность a1, a2, ... an по принципу: если в i-той строке матрицы на главной диагонали лежит отрицательный элемент, то ai равняется сумме предшествующих диагональному элементов, если... http://www.cyberforum.ru/cpp-beginners/thread1754263.html
Битовая маска C++
Как в шифровании битовыми перестановками применить маску?
Вывести минимальный элемент массива C++
Написать программу , которая выводит минимальный элемент введенного с клавиатуры массива целых чисел
C++ Восстановление пути из алгоритма Форда-Беллмана http://www.cyberforum.ru/cpp-beginners/thread1754219.html
Реализовал алгоритм Форда-Беллмана, но не получается правильно восстановить пути, подскажите, где ошибаюсь. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <vector> using namespace std; struct myStruct //для хранения пути {
C++ Значение в Label Здравствуйте. Помогите пожалуйста, а то никак не могу понять. У меня есть Label и мне надо что бы изначально ее значение было 0. Но при каждом нажатии на кнопку, к этому значению прибавлялось еще 3. Как это сделать? подробнее

Показать сообщение отдельно
stzer
89 / 65 / 19
Регистрация: 26.10.2013
Сообщений: 201
Завершенные тесты: 2
04.06.2016, 13:18     Найтисреднее арифметическое положительныхэлементов бинарного дерева
Попробуем обойтись без глобальных переменных и лишних обходов.
Вот рекурсивный метод обхода. Проверяйте,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void ArithMean(struct tree *r, int &value, int &counter) /*Среднее арифметическое*/
{
    if (r) // если узел существует
    {
        if (r->el <= 0) // если значение узла  отрицательно или равно 0
        {
            ArithMean(root->right, value, counter); // обходим правое поддерево, а в левом нет смысла искать, т.к. значения упорядочены
        }
        else // если значение узла положительно
        {
            value += r->el; // записываем значение узла
            ++counter; // увеличиваем счетчик
            ArithMean(root->left, value, counter); // обходим левое поддерево
            ArithMean(root->right, value, counter); // обходим правое поддерево
        }
    }
}
C++
1
2
3
4
int value = 0;
int counter = 0;
ArithMean(root, value, counter);
cout << "Среднее арифметическое положительных элементов дерева = " << (double)value / counter << endl;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru