-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpro23.cpp
96 lines (90 loc) · 1.17 KB
/
pro23.cpp
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
#include <iostream>
#include <cstddef>
using namespace std;
struct node{
int info;
node *l;
node *r;
};
struct node *root = NULL;
//struct node *p = NULL;
//struct node *pr = NULL;
int count = 0;
void tree_ins(){
node *n;
n = new node;
n->l = NULL;
n->r = NULL;
cout<<"\nEnter data: ";
int data;
cin>>data;
n->info = data;
if(count==0){
root = n;
} else{
node *p;
node *pr;
p = root;
while(p!=NULL){
if(p->info <= data){
pr = p;
p = p->r;
}
if(p->info > data){
pr = p;
p = p->l;
}
}
if(pr->info <= data){
pr->r = n;
}
if(pr->info > data){
pr->l = n;
}
count+=1;
}
}
void step(node *pt, int t, node *st[]){
pt=st[t];
t-=1;
int data;
while(pt!=NULL){
data = pt->info;
cout<<data;
if((pt->r) != NULL){
pt=pt->r;
step(pt, t, st);
}
pt=st[t];
t-=1;
}
}
void tree_dis(){
node *s[count];
int top=0;
s[top] = NULL;
node *p;
p = root;
while(p!=NULL){
top+=1;
s[top]=p;
p=p->l;
}
step(p, top, s);
}
int main(){
int c=1;
while(c!=0){
switch(c){
case 1:
tree_ins();
break;
case 2:
tree_dis();
break;
default: cout<<"Wrong input!";
}
cin>>c;
}
return 0;
}