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

Подсчет вершин бинарного дерева с++

27.09.2017, 12:42. Показов 6657. Ответов 2

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
#include <iostream>
 
using namespace std;
 
struct Node
{
    Node *l,*r; //левое и правое поддерево
    int x; //Некоторые данные
};
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЗВЕНА В ДЕРЕВО*/
void add(int x,Node *&MyTree) //Функция добавления звена в дерево
{
    if (NULL==MyTree)  
    {
        MyTree=new Node; 
        MyTree->x=x;
        MyTree->l=MyTree->r=NULL;
    }
 
                   if (x<MyTree->x) 
                      {
                          if (MyTree->l!=NULL) add(x,MyTree->l); 
                          else
                          {
                              MyTree->l=new Node;  
                              MyTree->l->l=MyTree->l->r=NULL; 
                              MyTree->l->x=x;
                          }
                      }
 
                    if (x>MyTree->x)  
                      {
                          if (MyTree->r!=NULL) add(x,MyTree->r); 
                          else
                          {
                              MyTree->r=new Node; 
                              MyTree->r->l=MyTree->r->r=NULL; 
                              MyTree->r->x=x; 
                          }
                      }
 
}
 
/*ОБХОД В ПРЯМОМ ПОРЯДКЕ*/
 void Show(Node *&tree)
{
    if (NULL==tree)    return;   
 
    cout<<tree->x<<endl;
    Show(tree->l); //Обошли левое поддерево
    Show(tree->r); //Обошли правое поддерево
}
 
int main()
{
    int x;
    Node *MyTree=NULL;
 
  for (int i=0;i<7;i++) 
  {
      cout<<"X = "; cin>>x;
      add(x,MyTree); 
  }
 
  Show(MyTree); 
}
как посчитать количество вершин, если их количество задается по умолчанию ( for (int i=0;i<7;i++) )
Заранее спасибо за идее и по возможности код.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2017, 12:42
Ответы с готовыми решениями:

Подсчет количества вершин бинарного дерева
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstring&gt; using namespace std;...

Обмен информации правых вершин одного бинарного дерева на информацию левых вершин другого
Помогите пожалуйста с задачей Написать программу обмена информации правых вершин одного бинарного...

Рекурсивный подсчет вершин дерева
Доброго времени суток. Есть такое задание: &quot;Написать рекурсивную программу, которая по заданному n...

Подсчет количества вершин дерева
Добрый вечер. Возникла проблема в коде, не знаю как &quot;соединить код&quot; всей программы + самого...

2
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,311
27.09.2017, 13:44 2
Shadow0671,
C++
1
2
3
4
size_t get_nodes_count(node *node) {
   if(node == nullptr) return 0;
   return 1 + get_nodes_count(node->left) + get_nodes_count(node->right);
}
1
2 / 2 / 1
Регистрация: 07.05.2016
Сообщений: 74
27.09.2017, 17:39  [ТС] 3
C++
1
2
3
4
5
size_t get_nodes_count(Node *tree)
{
    if(NULL==tree) return 0;
    return 1 + get_nodes_count(tree->l) + get_nodes_count(tree->r);
}
Так получилось, количество выводит. Спасибо за код.
0
27.09.2017, 17:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2017, 17:39
Помогаю со студенческими работами здесь

Рекурсия: подсчет суммы элементов бинарного дерева
Создать бинарное дерево. Написать рекурсивную числовую функцию, которая подсчитывает суму элементов...

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

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

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на...

Написать шаблон бинарного дерева с функцией распечатки дерева
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией...

Создание бинарного дерева из бинарного файла
struct Bin { string name; string city; int players; int score; }; void...


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

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