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

Бинарное дерево. Исправка кода - C++

Восстановить пароль Регистрация
 
papik1234567890
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 14
10.05.2013, 15:53     Бинарное дерево. Исправка кода #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
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
97
98
99
100
101
#include <iostream>
#include <string.h>
#include <Windows.h>
#include <time.h>
 
using namespace std;
 
struct Node{
    int val;
    Node*left;
    Node*right;
};
 
Node*root;
 
int Count(Node *root) // подсчитать листья
{
  int nRet = 0;
 
  if (root->left)
    nRet += Count(root->left);
  else
    nRet++;
 
  if (root->right)
    nRet += Count(root->right);
  else
    nRet++;
 
  return nRet;
}
 
// добавление элемента в дерево
void add_node(int x, Node* & root){
    if(root==NULL){
        root=new Node;
        root->val=x;
        root->left=root->right=NULL;
    }
    else {
        if (x < root->val)
            add_node(x, root->left);
            if(x>root->val)
                add_node(x, root->right);
    }
}
// распечатать дерево
void print_tree(Node*root){
    if (root==NULL)
        return;
    print_tree(root->left);
    cout<<root->val<<" ";
    print_tree(root->right);
}
 
// запрос
int zapros(){
    cout<<"Распечатка дерева:"<<endl;
    int answer;
    cout<<"Хотите ли вы распечатать дерево? /n 1. да. /n 2. нет."<<endl;
    cin>>answer;
    if(answer == 1)
        print_tree(root);
    
    cout<<endl<<"_________________________________"<<endl;
 
}
 
int main(){
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    const int MAX=1000;
    int mass[MAX];
    int Elements;
    int N, A;
    
 
 
   cout<<"Введите количество узлов:"<<endl;
   cin>>Elements;
   cout<<"Введите модуль МАКС и МИН возможных значений:"<<endl;
   cin>>N;
   A = (-N);
      srand(time(NULL));
    for(int i=0; i<Elements; i++){
        mass[i] = A + rand() % N;
        add_node(mass[i],root);
        
    }
    cout<<endl<<"_________________________"<<endl;
    zapros();
    
    int why;
    cout<<"Подсчёт количества листьев:"<<endl;
    why=Count(root);
    cout<<why<<endl<<"____________________"<<endl;
    zapros();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 15:53     Бинарное дерево. Исправка кода
Посмотрите здесь:

C++ бинарное дерево
бинарное дерево C++
C++ Бинарное дерево
Бинарное дерево C++
С++ для начинающих(исправка кода) C++
C++ бинарное дерево
C++ Бинарное дерево
C++ Бинарное дерево

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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