include iostream include stdlib include windows include stdio using na

  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
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
using namespace std;
class leaf // один узел
{
public:
int info;
struct leaf *vniz, *right;
leaf(int x) // конструктор вместо функции создания узла нового дерева
{
info = x ;
vniz = right = NULL;
cout<<"zapisal-"<<x<<endl;
}
//методы дерева
/* *leaf new_leaf (int x) // создание нового узла дерева
{
TREE temp(x);
temp = (TREE) malloc (sizeof(struct leaf));
temp->left = temp->right = NULL;
return temp;
}
*/
/* leaf* add_leaf(int x, leaf *pn) //функция добавления узла в дерево
{
if (pn == NULL)
return (new leaf(x));
if (x < pn->info)
pn->left = add_leaf (x, pn->vniz);
else
pn->right = add_leaf (x, pn->right);
return pn;
}
*/
};
leaf* f(int x, leaf *yzel)
{
int n=x%10;
/* if(!yzel)
{
yzel= new leaf(x%10);
if(x>9)
f(x,yzel);
else
f(666,yzel);
}
*/
if(n==yzel->info || ( (yzel->info==x) && (x==-1) ) )
{
if(x>9 && x!=-1) //если это не последняя цифра числа
{
if(yzel->vniz)
f(x/10,yzel->vniz);
else
{
yzel->vniz=new leaf((x/10)%10);
if(x>100)
f(x/10,yzel->vniz);
else
yzel->vniz->vniz=new leaf(-1);
}
}
else // если это единственная цифра
{
if(yzel->vniz)
f(-1,yzel->vniz);
else
yzel->vniz=new leaf(-1); // создаем указатель-узел на конечность набора
}
}
else
{
if(yzel->right)
f(x,yzel->right);
else
{
if(x!=-1)
yzel->right=new leaf(x%10);
else
yzel->right=new leaf(x);
if(x>9)
f(x/10,yzel->right);
else
yzel->right->vniz=new leaf(-1);
}
}
return yzel;
};
int main()
{
int n;
leaf *tree=NULL;
for(int i=0; i<5; i++)
{
cin>>n;
if(!tree)
tree=new leaf(n%10);
f(n,tree);
}
return 0;
}