Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.11.2017
Сообщений: 4
1

Бинарные деревья: найти среднюю длину веток дерева

03.05.2019, 21:31. Показов 832. Ответов 0

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите,пожалуйста, с бинарными деревьями. Необходимо вычислить среднюю длину веток дерева. Уже есть программа, которая создает и выводит дерево.
Заранее спасибо)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "stdafx.h"
#include <iostream> 
#include <math.h> 
#include <time.h> 
using namespace std;
 
struct BinaryTree
{
    int Data; //поле данных
    BinaryTree* Left; // Указатель на левый потомок
    BinaryTree* Right; // Указатель на правый потомок
};
BinaryTree* BTree = NULL;
 
void Make_Binary_Tree(BinaryTree** Node, int n)
{
    BinaryTree** ptr; // Вспомогательный указатель
    srand(time(NULL) * 1000);
    while (n > 0)
    {
        ptr = Node;
        while (*ptr != NULL)
        {
            if ((double)rand() / RAND_MAX < 0.5)
                ptr = &((*ptr)->Left);
            else
                ptr = &((*ptr)->Right);
        }
        (*ptr) = new BinaryTree();
        cout << "Input count ";
        cin >> (*ptr)->Data;
        n--;
    }
}
 
void Print_BinaryTree(BinaryTree* Node, int l)
{
    int i;
    if (Node != NULL)
    {
        Print_BinaryTree(Node->Right, l + 1);
        for (i = 0; i < l;i++)
            cout << "|";
        printf("%4ld", Node->Data);
        Print_BinaryTree(Node->Left, l + 1);
    }
    else cout << endl;
}
int Print_Number(BinaryTree* Node, int k = 1) {
    if (Node != NULL) {
        Print_Number(Node->Left, k + 1);
        Print_Number(Node->Right, k + 1);
        cout << "число:   " << Node->Data
            << "\tуровень: " << k << endl;
    }
    return 0;
}
 
int main()
{
    setlocale(0, "");
    int n;
    cout << "введите количество элементов ";
    cin >> n;
 
        Make_Binary_Tree(&BTree,n );
 
    cout << "ваше дерево\n";
    Print_BinaryTree(BTree, 0);
    Print_Number(BTree);
    system("pause");
    return 0;
    
}
Добавлено через 4 часа 4 минуты
Не понимаю, какой обход здесь надо реализовывать, ведь нужно же, чтобы алгоритм после нахождения каждого листа должен запускаться заново от корня...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2019, 21:31
Ответы с готовыми решениями:

Бинарные деревья, вывод дерева на экран
Создание бинарное дерево, помогите с выводом дерева на экран #include &lt;iostream&gt; #include...

Бинарные деревья. Напечатать все элементы дерева Т по уровням
Всем привет. Помогите написать программу или хотя бы функцию, условие следующее: Напечатать все...

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает указатель на корень...

Найти и удалить среднюю по значению из вершин дерева
Здравствуйте, Я студент 1-ого курса, нужно помощь с написанием кода к этой программе. Задача...

0
03.05.2019, 21:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2019, 21:31
Помогаю со студенческими работами здесь

Найти среднюю длину слова в тексте
Помогите, прога С++. найти среднюю длину слова в тексте( без учета пробелов)

Найти среднюю длину слов в строке
Здравствуйте, необходима помощь с заданием. Дана строка текста, в которой слова разделены...

Деревья. Найти длину пути из узла a в узел b
дано бинарное дерево. найти длину пути из узла a в узел b.(если такой узел не существует то...

Найти среднюю длину слова, предложения, абзаца в заданном тексте (файловый ввод/вывод)
получить следующую информацию о тексте, содержащуюся в файле: -среднюю длину предложения (в...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru