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

Бинарные деревья: дописать код ,чтобы искать число массива в бинарном дереве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Самое последнее http://www.cyberforum.ru/cpp-beginners/thread1049176.html
Задан массив целых чисел Х(n). Найти • сумму положительных четных элементов массива; • количество элементов массива, расположенных после первого нулевого элемента. Из данного массива и некоторого массива того же типа, но другой размерности Y(m), сформировать общий массив Z(n+m). Удалить из полученного массива наибольший элемент. Вот последнее не могу допетрить. #include "iostream"
C++ Длина имен Кто знает, подскажите, пожалуйста: 1) Какова максимальная длина локального имени, которое можно использовать в реализации С++? 2) Какова максимальная длина внешнего имени, которое можно использовать в реализации С++? как можно реализовать программно вопросы 1 и 2, чтобы посмотреть максимальные длины имен(локальных и внешних) ? http://www.cyberforum.ru/cpp-beginners/thread1049172.html
Сортировка структур C++
Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов; • вывод на экран информации о поезде, номер которого введен с клавиатуры; • если таких поездов нет, выдать на дисплей соответствующее сообщение. #include <iostream> #include <string> using namespace std;...
проверка на квадрат разложенных чисел C++
нужно написать программу которая переводит число в 8ую запись, и убрав из нее одну цифру,проверяет,квадрат ли это или нет. Алгоритм перевода в восьмеричную знаю, написал..а вот дальше как.. while (0<x) b=x%8; z=z+b*m; m=m*10; x=x/8;
C++ Вычислить сумму S http://www.cyberforum.ru/cpp-beginners/thread1049163.html
Вычислить сумму S= при x =1(0,1)2.
C++ Написать программу, осуществляющую ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK Ребят помогите, пожалуйста, написать программу по такому заданию: Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по датам дней рождения; вывод на экран информации о человеке, чья фамилия введена с клавиатуры; если такого нет, выдать на дисплей соответствующее сообщение.... подробнее

Показать сообщение отдельно
Андрей445232
0 / 0 / 0
Регистрация: 21.12.2012
Сообщений: 8
19.12.2013, 23:34     Бинарные деревья: дописать код ,чтобы искать число массива в бинарном дереве
Реализация:
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
#include "time.h"
using namespace std;
 
struct  bin_tree
{
   int value;
   bin_tree *left, *right;
}*pHead = NULL; // указатель на вершину равен нулю
 
// добавление конкретного узла дерева
void add_node(bin_tree*, int); 
// проверка на "пустоту" дерева, если указатель на вершину равен нулю, создает узел
void add_bin_tree(int);
// обход
void print(bin_tree*);
void traversal(bin_tree*, ofstream&);
int h_tree(bin_tree *);
 
int main()
{
    setlocale (LC_ALL, "Russian");
    clock_t c1=clock(); 
    int arr[100];
{srand(time (NULL));
        for (int i=0;i<100;i++)
            arr[i] = rand () %201;
          for(int i=1;i<100;i++)   
              add_bin_tree (arr[i]);
    }
    ofstream o("bin.txt");
    print (pHead);
    traversal (pHead, o);
    getch();
    o.close();
    clock_t c2=clock();
    cout<<endl;
cout<<"Время работы программы:"<<c2-c1<<endl;
    return 0;
}
 
void add_node(bin_tree* tree, int value) // добавление конкретного узла дерева
{
    if(value < tree->value)
    { 
        if(tree->left != NULL) // если значение меньше, двигаемся по "левой ветке"
            add_node(tree->left, value);
        else
        {  
            tree->left = new bin_tree;
            tree->left->value = value;
            tree->left->left = NULL;
            tree->left->right = NULL;
        }
    }
 
    if(value > tree->value) // иначе двигаемся по правой 
    { 
        if(tree->right != NULL)
            add_node(tree->right, value);
        else
        {
            tree->right = new bin_tree;
            tree->right->value = value;
            tree->right->left=NULL;
            tree->right->right=NULL;
        }
    }
 
    if(value == tree->value)                
        cout<< value<< " is already in tree"<< endl;
}
 
void add_bin_tree(int value)
{
    if(pHead == NULL) // если дерево пустое - создадим первый узел
    {
       pHead = new bin_tree;
       pHead->value = value;
       pHead->left = NULL;
       pHead->right = NULL;
    }
    else
        add_node(pHead, value); // если в вершине уже что-то есть - добавляем слева или справа 
}
 
void traversal(bin_tree* tree, ofstream &o)
{     
    if (tree != NULL)
    { 
        traversal(tree->left, o);
        o<< tree->value<< " ";
        traversal(tree->right, o);
    }
}
 
void print(bin_tree* tree)
{     
    if (tree != NULL)
    { 
        print(tree->left);
        cout<< tree->value<< " ";
        print(tree->right);
    }
}
 
int h_tree(bin_tree* tree)
{
     int h = 1, m = 0, s;
     if (tree == NULL)
        return 0;
     s = h_tree(tree->left);
     if (s > m)
         m = s;
     s = h_tree(tree->right);
     if (s > m)
         m = s;
     return h + m;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru