Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 25.11.2018
Сообщений: 13
1

Определить число листьев на каждом уровне бинарного дерева

29.05.2019, 10:47. Просмотров 1094. Ответов 1
Метки нет (Все метки)

Помогите! Нужно написать программу Определение число листьев на каждом уровне БИНАРНОГО дерева. Нужна реализация без классов и векторов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2019, 10:47
Ответы с готовыми решениями:

Определить число листьев на каждом уровне дерева
Нужно составить такую функцию. Именно на каждом отдельном уровне, а не по дереву вообще.

Определить число узлов на каждом уровне дерева
Я не силен в деревьях, помогите пожалуйста

Подсчитать количество листьев дерева не на последнем уровне, имеющем листья.
Добрый день! Не могу разобраться со следующим: нужно подсчитать количество листьев не на последнем...

Печать листьев бинарного дерева
Всем привет! Решаю такую задачу: На входе - последовательность целых чисел, оканчивающаяся 0,...

1
1460 / 926 / 807
Регистрация: 30.04.2016
Сообщений: 3,197
27.06.2019, 21:40 2
Lori_, здравствуйте! Хоть это и было месяц назад, вот код. Может быть, он вам все еще нужен:

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
Написать программу определения числа листьев на каждом уровне бинарного дерева.
*/
 
#include <iostream>
 
    using namespace std;
 
struct BTree {
    int data;
    BTree* left;
    BTree* right;
};
 
BTree* add(int data) {
    BTree* node = new BTree;
    node->data = data;
    node->left = NULL;
    node->right = NULL;
    return node;
}
 
int height(BTree* node) { //Функция определения высоты дерева (число уровней)
    if (node == NULL) {
        return 0;
    } else {
        int lheight = height(node->left);
        int rheight = height(node->right);
        if (lheight > rheight) {
            return (lheight + 1);
        } else {
            return (rheight + 1);
        }
    }
}
 
bool isLeaf(BTree* node) { //Функция проверки, что узел дерева является листом
    if (!node->left && !node->right) {
        return true;
    }
    return false;
}
 
int printGivenLevel(BTree* node, int level) { //Функция подсчета листьев на заданном уровне
    if (node == NULL)
        return 0;
    static int k = 0;
    if (level == 1) {
        if (isLeaf(node)) {
            k++;
        }
    } else if (level > 1) {
        printGivenLevel(node->left, level - 1);
        printGivenLevel(node->right, level - 1);
    }
    return k;
}
 
void printLevelOrder(BTree* root) {
    int h = height(root); //Количество уровней (высота дерева)
    for (int i = 1; i <= h; i++) {
        cout << "Level #" << i << " => ";
        int curr = printGivenLevel(root, i);
        cout << printGivenLevel(root, i) - curr;
        cout << "\n";
    }
}
 
int main() {
    BTree* root = add(7);
    root->left = add(3);
    root->right = add(9);
    root->left->left = add(2);
    root->left->right = add(5);
    root->right->left = add(8);
    root->left->left->left = add(1);
    root->left->left->left->right = add(7);
    root->left->right->left = add(4);
    root->left->right->left->right = add(0);
    root->left->right->right = add(6);
 
    /*          
            7
         /     \
        3       9 
      /   \    / 
     2     5  8
   /     /   \  
  1     4     6 
   \     \
      7   0     
  */
 
    printLevelOrder(root); //Вывод числа листьев дерева по уровням
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2019, 21:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция вывода листьев бинарного дерева
Написал функцию вывода всего что есть в дереве. помогите переделать ее так чтобы она выводила...

Вывести разность значений всех листьев бинарного дерева
Дан указатель P1 на корень непустого дерева. Вывести разность значений всех листьев данного...

Вывод списка всех листьев бинарного дерева поиска
Нужно реализовать бинарное дерево поиска и вывести все его вершины, не имеющие потомков. Само...

Подсчет числа вершин на каждом уровне непустого дерева
Задание: Напишите программу, содержащую процедуру или функцию, которая подсчитывает число вершин...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.