Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2017, 16:15   #1
vladrrom
Пользователь
 
Регистрация: 14.12.2016
Сообщений: 54
По умолчанию Подсчитать среднее арифметическое значений узлов в идеально сбалансированном дереве. - С++

В файле input.txt хранится последовательность целых чисел.
По входной последовательности построить идеально сбалансированное дерево и подсчитать среднее арифметическое значений узлов.
Подскажите, пожалуйста, как записать нахождение среднего арифметического всех узлов дерева.
p.s. я понимаю, что при ф-ции обхода (по вашему мнению, какой лучше использовать обход в Идеал. Сбланс. дереве?) надо складывать информационные поля.
Код есть, но не доделанный:
Код:
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct tree {
    int inf;
    tree *right;
    tree * left;
};
tree *root;
 
void create(int number, tree *&root)
{
    int a;
    if (number > 0)
    {
        root = new tree;
        in >> a;  //считываем из файла in очередное число
        root->inf = a;
        root->left = root->right = NULL;
        int numberLeft = number / 2, numberRight = number - numberLeft - 1;
        create(numberLeft, root->left);
        create(numberRight, root->right);
    }
}
 
void search(int x, tree *root)
{
    if (root) // если дерево не пустое
        if (x == root->inf) /* и значение узла равно x,  то выводим сообщение об успешности поиска и выходим из подпрограммы */
        {
        cout << "search is successful";
        }
        else    {
            search(x, root->left); /* иначе  обходим левое и правое поддеревья */
            search(x, root->right);
        }
}
 
void preorder(tree *root)
{
    if (root)
    {
        cout << root->inf +  << "\t"; //складываем 
        preorder(root->left);
        preorder(root->right);
    }
}
 
int main(){
    int a;
    in >> a;
    create(a, root);
    in.close();
    out.close();
    return 0;
}
vladrrom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести файл . Найти среднее арифметическое среди значений элементов файла, принадлежащих интервалу [-5; 5]. Если среднее положител kostyan199731 Паскаль, Turbo Pascal, PascalABC.NET 0 18.03.2015 21:53
Дана последовательность целых чисел.Подсчитать среднее арифметическое отрицательных элементов. d_dima Помощь студентам 5 20.03.2013 15:14
С++ Найти среднее арифметическое положительных и среднее арифметическое отрицательных чисел, минимальное по модулю число. Юрик 530 Помощь студентам 4 03.12.2011 16:26
Подсчитать среднее арифметическое элементов, расположенных под побочной диагональю. в С# Frenki Помощь студентам 0 13.10.2009 15:56