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

Посчитать количество узлов в дереве, левое и правое поддеревья которых равны

24.01.2023, 11:01. Показов 981. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int NodeCount(BinaryTreeNode * node)
{
    if (node->leftChild == NULL && node->rightChild == NULL)
        return 1;
    int left, right;
    if (node->leftChild != NULL)
        left = NodeCount(node->leftChild);
    else
        left = 0;
    if (node->rightChild != NULL)
        right = NodeCount(node->rightChild); 
    else 
        right = 0;
 
    return left+right+1;
}
Тут я считаю просто количество узлов, а как переделать

Добавлено через 14 минут
И как реализовать структуру
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2023, 11:01
Ответы с готовыми решениями:

Посчитать количество неполных узлов в бинарном дереве
Всем привет. Помогите пожалуйста написать рекурсивную функцию обхода дерева, которая посчитает неполные узлы (только функцию, остальное уже...

Вычислите количество вершин, у которых равны или высоты поддеревьев, или количество потомков в правом и левом поддеревья
Помогите пж сделать программу по си. Вычислите количество вершин, у которых равны или высоты поддеревьев, или количество потомков в правом...

Определить количество узлов в дереве, в которых есть указатель только на одну ветвь (ветку) C++
Основные операции с бинарным деревом Определить количество узлов в дереве, в которых есть указатель только на одну ветвь (ветку) C++ ...

4
14 / 9 / 5
Регистрация: 22.01.2023
Сообщений: 23
24.01.2023, 19:56
Лучший ответ Сообщение было отмечено boristo4karu как решение

Решение

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
#include <iostream>
using namespace std;
 
struct Node {
    int data;
    Node *left, *right;
};
 
int countEqualSubtrees(Node* root) {
    if (!root) return 0;
    if (root->left == root->right) return 1 + countEqualSubtrees(root->left) + countEqualSubtrees(root->right);
    return countEqualSubtrees(root->left) + countEqualSubtrees(root->right);
}
 
int main() {
    // Инициализация дерева
    Node* root = new Node();
    root->data = 1;
    root->left = new Node();
    root->left->data = 2;
    root->right = new Node();
    root->right->data = 2;
    root->left->left = new Node();
    root->left->left->data = 3;
    root->left->right = new Node();
    root->left->right->data = 3;
    root->right->left = new Node();
    root->right->left->data = 3;
    root->right->right = new Node();
    root->right->right->data = 3;
    
    // Подсчет узлов
    cout << "количество узлов в дереве, левое и правое поддеревья которых равны: " << countEqualSubtrees(root) << endl;
    return 0;
}
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.01.2023, 02:26
Цитата Сообщение от Cofa_copr Посмотреть сообщение
if (root->left == root->right)
извините, а как могут указатели на левый и правый узел, быть одинаковыми ?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
25.01.2023, 12:32
Цитата Сообщение от boristo4karu Посмотреть сообщение
Тут я считаю просто количество узлов, а как переделать
а зачем переделывать? Задача решена подсчётом узлов. А кому хуже от того, что не использовано условие про поддеревья в решении?
Хотя в порядке бреда...
C++
1
2
3
4
5
6
7
int NodeCount(BinaryTreeNode * node)
{
    if (node->leftChild == NULL)
        return 1;
    int left = NodeCount(node->leftChild);  
    return left*2+1;
}
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.01.2023, 16:02
Kuzia domovenok, так мало того что на условие наплевали.
Так его даже и не определили !
Вот мне непонятно что подразумевается под равенством левого и правого дерева ?
Может это одинаковые значения в левом и правом узлу,
может одинаковое количество узлов в левом и правом дереве,
может наличие в них кандибобера.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2023, 16:02
Помогаю со студенческими работами здесь

Перестановка узлов в дереве - Попарная замена узлов в дереве и случайная замена узлов в дереве
Нужно реализовать два варианта сортировки дерева: 1. попарная замена узлов в дереве 2. случайная замена узлов в дереве Попарную...

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

Посчитать количество элементов массива, значение которых равны нулю
1. Посчитать количество элементов массива, значение которых равны нулю, остальные элементы массива заменить единицами. 2. Пузырьковый...

Массив: посчитать в нем количество троек d[i][j], d[i][j+1], d[i][j+2], в каждой из которых элементы равны
дан массив D(M,K) целых чисел. посчитать в нем количество троек d, d, d, в каждой из которых элементы равны

Описать левое и правое разложение S4 по подгруппе п
\pi = \begin{pmatrix}1&amp;2&amp;3&amp;4\\ 2&amp;3&amp;4&amp;1 \end{pmatrix}


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru