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

Деревья. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ создание класса http://www.cyberforum.ru/cpp-beginners/thread529503.html
Создайте класс bMoney, в котором перегрузите арифметические операции для работы с денежным форматом. Перегрузите два оператора следующим образом: long double * bMoney ...
C++ Рекурсия: сумма ряда Здравствуйте. Помогите написать программу: В основном трудности возникли с Ak и Bk. Заранее благодарен. http://www.cyberforum.ru/cpp-beginners/thread529497.html
C++ Даны натуральные числа a,b(a<= Ь). Получить все простые числа р, удовлетворяющие неравенствам a<= р<= b.
Даны натуральные числа a,b(a<= Ь). Получить все простые числа р, удовлетворяющие неравенствам a<= р<= b. Решите на С++. Буду очень благодарна!
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. C++
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. Решите на С++. Заранее спасибо!
C++ Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых , равен m http://www.cyberforum.ru/cpp-beginners/thread529492.html
Даны натуральные числа n, m. Получить все меньшие n натуральные числа, квадрат суммы цифр которых , равен m Решите на С++.Буду благодарна!
C++ точка с координатами х,у. х<>0 в какой четверти координатной плоскости находится точка с координатами х,у. х<>0 подробнее

Показать сообщение отдельно
erioik
1 / 1 / 0
Регистрация: 22.10.2010
Сообщений: 26
27.03.2012, 23:25  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Если да, то выкладывай! Быстро! Чего ж ты не выложил сразу свои наработки?
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
#include <iostream>
#include <fstream>
using namespace std;
 
struct node
{
    int key;
    node *left;
    node *right;
};
class Tree
{
private:
    node *root;
public:
    int h;
    int mW;
    int toDel;
    ofstream out;
    Tree (){root = NULL;toDel=-1;h=0;out.open("out.txt",ios::out);}
    ~Tree(){out.close();}
    node** getTree (){return &root;}
    void built();
    void add (node**, int);
    void obhod (node**);
    void del (node **,int);
    void del1 (node **,node **);
};
    void Tree::built()
    {
        ifstream in ("in.txt");
        int el;
        in>>el;
        while (in)
        {
            add (&root,el);
            in>>el;
        }
        in.close();
    }
    void Tree::add(node** w,int x)
    {
        if (*w==NULL)
        {
            *w = new (node);
            (**w).key=x;
            (**w).left=NULL;
            (**w).right=NULL;
        }
        else
        {
            if (x < (**w).key)
            {
                add (&(**w).left, x);
            }
            if (x > (**w).key)
            {
                add (&(**w).right, x);
            }
        }
    }
    void Tree::obhod(node** w)
    {
        if (*w != NULL)
        {
            out<<((**w).key)<<endl;
            obhod (&(**w).left);
            obhod (&(**w).right);
        }
    }
 
void Tree::del (node **w,int k)
{
  node *q;
 
  if  (*w==NULL) {}
  else
     if  (k<(**w).key) del (&((**w).left),k);
     else
        if  (k>(**w).key) del (&((**w).right),k);
        else
          {
                    q = *w;
                    if  ((*q).right==NULL) {*w = (*q).left; delete q;}
                    else
                     if  ((*q).left==NULL) { *w = (*q).right; delete q; }
                     else  del1 (&((*q).right),&q);
          }
}
 
void Tree::del1 (node **r,node **q)
{
  node *s;
 
  if  ((**r).left==NULL)
  {
    (**q).key = (**r).key;
    *q = *r;
    s = *r; *r = (**r).right; delete s;
  }
  else  del1 (&((**r).left), q);
}
 
    int main ()
    {
        Tree A;
        A.built();
        A.obhod(A.getTree());
        return 0;
    }
Добавлено через 16 минут
кстати, удалить среднюю по значению величину, т.е. если если в итоге получается нечетное количество вершин с одинаковой разницой, то удалить нужно среднюю из них. если же их количество четно - ничего делать не нужно.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru