Деревья cpp определяет точку входа для консольного приложения define _

 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
// Деревья.cpp: определяет точку входа для консольного приложения.
//
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
int uroven=0;//количество уровней
int dobavlenno=0;//переменная рассказывающая о том сколько лементов уже добавленно на этом уровне
int z = 1;//переменная для добавления после последнего уровня
struct tree
{
int chislo;
tree* left;
tree* right;
};
tree* Push(int chto)
{
tree* Elem = new tree;
Elem->chislo = chto;
dobavlenno++;
int j=1;
for (int i = 1; i < uroven; i++)
j *= 2;
if (dobavlenno == j) { dobavlenno = 0; uroven++; }
Elem->left = NULL;
Elem->right = NULL;
return Elem;
}
void print_Tree(tree* p, int level)
{
if (p)
{
print_Tree(p->left, level + 1);
for (int i = 0; i< level; i++) printf( " ");
printf("%d\n",p->chislo);
print_Tree(p->right, level + 1);
}
}
void Dobavit(int chto,int N1,int N2,tree* derevo)
{
z++;
int G = N2-(N2-N1)/2-0.0001;
if ((N1 == dobavlenno + 1) && (z==uroven)) { derevo->left = Push(chto); return; };
if ((N2 == dobavlenno + 1) && (z == uroven)) { derevo->right = Push(chto); return; };
if (((dobavlenno + 1) < G+1) || ((dobavlenno + 1) == G)) { Dobavit(chto, N1, G, derevo->left); }
else { Dobavit(chto, G+1, N2, derevo->right); };
return;
}
void obh1(tree* derevo)
{
}
int _tmain(int argc, _TCHAR* argv[])
{
int chto=0;
tree* derevo=NULL;
printf("Programma derevo\nVvedite pervi koren dereva\n");
scanf("%d",&chto);
dobavlenno = 0;
uroven = 1;
derevo = Push(chto);
char ch1=' ';
int N2=1;
while (ch1 != 'e')
{
fflush(stdin);
printf("Chto hotite?\n d-dovit element\n v-vivod\no-obhod\n");
ch1=getchar();
switch (ch1){
case 'd':
scanf("%d", &chto);
for (int i = 1; i < uroven; i++)
N2 *= 2;
Dobavit(chto, 1, N2, derevo);
N2 = 1;
z = 1;
break;
case 'v':
print_Tree(derevo,0);
case 'o':
}
}
return 0;
}