Форум программистов, компьютерный форум CyberForum.ru

Количество листьев в бинарном дереве - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
lisenog
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 13
30.05.2011, 22:12     Количество листьев в бинарном дереве #1
Задача: Найти количество листьев в дереве.
Собственно ввод и вывод дерева есть:

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
#include <iostream.h>
#include <iomanip.h>
 
using namespace std;
 
struct tree
 {
       int info;
       tree *left, *right;
 };
 
int InsertNode(tree * &root, int k) //ÔîðìèðîâГ*Г*ГЁГҐ ñòðóêòóðû äåðåâГ*
 {
                    int list;
                    list=0;
                    if(root==NULL)
                     {
                                  root = new tree;
                                  root->info=k;
                                  root->left=NULL;
                                  root->right=NULL;
                                  list++;
                     }
                    else
                     if(k<root->info)
                      InsertNode(root->left,k);
                     else
                      if(k>root->info)
                       InsertNode(root->right,k);
                      else
                       cout<<"Takoe chislo uzhe est' v dereve"<<endl;
 }
 
int MakeTree(tree * &root) //Ââîä ýëåìåГ*òîâ äåðåâГ*
 {
                  int k;
                  cout<<"vvedite posledovatelnost chisel i zakonchite ee nulem"<<endl;
                  cin>>k;
                  while(k)
                   {
                          InsertNode(root,k);
                          cin>>k;
                   }
 }
 
int PrintTree(tree * root, int level) //Âûâîä äåðåâГ*
 {
                   if(root)
                    {
                           PrintTree(root->left,level+1);
                           cout<<setw(2*level)<<root->info<<endl;
                           PrintTree(root->right,level+1);
                    }
 }
 
int main ()
 {
         int list;
         tree * root=NULL;
         bool test=false;
         MakeTree(root);
         cout<<"Tree : "<<endl;
         PrintTree(root,1);
         cout<<"V dereve : "<<list-1<<" list'ev"<<endl;;
         system("pause");
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2011, 22:12     Количество листьев в бинарном дереве
Посмотрите здесь:

Поиск в Бинарном Дереве! C++
Сумма чисел в бинарном дереве C++
Строки в бинарном дереве C++
Поиск листьев в дереве C++
Поиск дубликатов в бинарном дереве C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
01.06.2011, 22:14     Количество листьев в бинарном дереве #2
Ну и какие попытки для решения задачи ты уже предпринимал?
Point_0
3 / 3 / 0
Регистрация: 02.10.2011
Сообщений: 87
04.12.2012, 14:54     Количество листьев в бинарном дереве #3
не решили задачу?
в этой теме описывали одно из решений
Подсчитать количество листьев в дереве
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.12.2012, 15:45     Количество листьев в бинарном дереве #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
size_t CoutTerminal(tree *root)
{
 size_t result;
 if ((root->left==NULL)&&(root->right==NULL)
 {
  result=1;
 }
 else
 {
  result=0;
 }
 if (root->left)
 {
  result+=CoutTerminal(root->left);
 }
 if (root->right)
 {
  result+=CoutTerminal(root->right);
 } 
 return result;
}
Добавлено через 1 минуту
Все узлы тоже считать?
Yandex
Объявления
04.12.2012, 15:45     Количество листьев в бинарном дереве
Ответ Создать тему
Опции темы

Текущее время: 20:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru