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

В двоичном дереве удалить все узлы, значения которых является простым числом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить другие стороны параллелограмма http://www.cyberforum.ru/cpp-beginners/thread906500.html
В параллелограмме A B C D сторона AB составляет A/B всего периметра. Определить другие стороны параллелограмма
C++ В спортивных соревнованиях Шарик, кот Матроскин, дядя Фёдор и почтальон Печкин заняли соответственно 1, 2, 3 и 4 места Всем привет! помогите пожалуйста написать программу. В спортивных соревнованиях Шарик, кот Матроскин, дядя Фёдор и почтальон Печкин заняли соответственно 1, 2, 3 и 4 места. Составить программу, которая по номеру места выдаёт имя участника соревнований. Нужно сделать через классы,ооп. http://www.cyberforum.ru/cpp-beginners/thread906497.html
Перевести число в эквивалентное обозначение буквами C++
Помогите, пожалуйста! Дано натуральное число N, нужно вывести название столбца (как в Excel), который бы имел номер N, т.е. если N = 1, вывести A если N = 2, вывести B если N = 3, вывести C ... если N = 26, вывести Z если N = 27, вывести AA если N = 28, вывести AB и т.д.
C++ Как внедрить в откомпилированный файл дополнительные данные?
Т.е. пишем небольшую программку, основные действия которой: String fileData = "SODERZHIMOE FAILA"; String fileExt = "RASSHIRENIE FAILA"; String Path = "C:\\"; Path+=fileExt; FILE *f=fopen(Path,"wt"); fwrite(fileData.c_str(),sizeof(char),file.Length(),f); fclose(f); delete f; ShellExecute(Form1->Handle,"open",Path,NULL, NULL,1);
C++ Найти наибольшее и наименьшее из значений элементов, расположенных в заштрихованной части матрицы http://www.cyberforum.ru/cpp-beginners/thread906402.html
Дана действительная квадратная матрица порядка n. Найти наибольшее и наименьшее из значений элементов, расположенных в заштрихованной части матрицы. Область расположена ниже главной диагонали.
C++ Массивы (переменная в качестве размера для массива) Доброго времени суток! Подскажите, что я не правильно сделал? Там где у меня создаются массивы переменная "number" подчеркнута, а когда указываю статическое число то все нормально. Подскажите мне неучу почему так? #include <iostream> #include <string> using namespace std; подробнее

Показать сообщение отдельно
newyork7776
347 / 340 / 79
Регистрация: 21.05.2013
Сообщений: 1,305
Завершенные тесты: 1
19.06.2013, 16:37  [ТС]     В двоичном дереве удалить все узлы, значения которых является простым числом
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <time.h>
using namespace std;
struct  node
{
  int key;
  node *left;
  node *right;
}; 
class TREE
{
  private:
    node *tree; //Вказівник на корінь дерева.
    
  public: 
    TREE() {tree=NULL;}
    node** GetTree () {return &tree;} //отримані вершини дерева.
    void buildTree (int,node **); //будуємо дерево
    void CleanTree (node **);//очистка дерева
    void ObhodLeft (node **);//обхід дерева
    void Vyvod (node**,int);//виводимо наше дерево на екран
    void searchInTree(int ,node **,int);//пошук в дереві
};
int l(1),q(0); 
void main ()
{
    setlocale(LC_ALL, "Russian");
 
    cout << "Напиш1ть к1льк1сть цифр = ";
  TREE A;
    int numb;
    cin >> numb;
  srand(time(NULL));
    A.buildTree (numb,A.GetTree());
  cout<<"\nЦе наше дерево\n";
  A.Vyvod (A.GetTree(),0);
 
  cout<<"\nНизх1дний порядок проходження дерева: ";
  A.ObhodLeft (A.GetTree());
  
    char symbol;
  do{
    cout << "\n Напиш1ть 0,щоб вийти з програми ";
    cin >> symbol;
    cout << "\n Цифра " << symbol << " в дерев1 \n";
    A.searchInTree(numb,A.GetTree(),(int)symbol);
    if(q == 0) cout << "Дерево очищенно"; 
    l = 1;
    q = 0;
  }
  while(symbol != '0');
 
 A.CleanTree (A.GetTree());
    cout << endl; 
 system("pause");
}  
void TREE::buildTree (int x,node **p)
{
    int leftNodes,rightNodes;
    leftNodes = x / 2;
    rightNodes = x - leftNodes - 1;
    
    
  if  (*p==NULL)
  {
 
      *p = new(node);
    (**p).key = rand()%21;   
    (**p).left = NULL; 
    (**p).right = NULL; 
  }
  if(leftNodes > 0) buildTree(leftNodes,&((**p).left));
  if(rightNodes > 0)  buildTree(rightNodes,&((**p).right));
} 
void TREE::ObhodLeft (node **w)
{
  if  (*w!=NULL)
  {
    cout<<(**w).key<<" ";
    ObhodLeft (&((**w).left));
    ObhodLeft (&((**w).right));
  }
}
void TREE::CleanTree (node **w)
{
  if  (*w!=NULL)
  { CleanTree (&((**w).left));
    CleanTree (&((**w).right));
    delete *w; }
} 
void TREE::Vyvod (node **w,int l)
{
  int i;
  if  (*w!=NULL)
    { 
      Vyvod (&((**w).right),l+1);
            for  (i=1; i<=l; i++) 
                    cout<<"   ";
            if ((**w).key % 2 != 0) 
                    cout<<(**w).key << endl;
    Vyvod (&((**w).left),l+1);
    }
}
void TREE::searchInTree (int x,node **p,int s)
{
    int leftNodes,rightNodes;
    leftNodes = x / 2;
    rightNodes = x - leftNodes - 1;
    if((**p).key == s) 
    {   
            cout << l << " ";
            ++q;
    }
    ++l;
  if(leftNodes > 0) searchInTree(leftNodes,&((**p).left),s);
  if(rightNodes > 0)  searchInTree(rightNodes,&((**p).right),s);
    
 
}

а я вот так решил задачу,конешно направельно,но результат вроде правильный

Добавлено через 2 минуты
на базе мого варианта можна как-то создать новое дерево и запихать туде елементы которие выводяться на екран?

Добавлено через 2 минуты
мой вариант только с парним елементом
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru