-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaddition 4.cpp
More file actions
103 lines (96 loc) · 1.56 KB
/
addition 4.cpp
File metadata and controls
103 lines (96 loc) · 1.56 KB
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
using namespace std;
typedef struct BiNode {
int elem;
BiNode *Lkid, *Rkid;
}BiNode,*BiTree;
int initializeBiTree(BiTree T) {
T = (BiNode*)malloc(sizeof(BiNode));
if (!T) exit(0);
T->elem = -1;
T->Lkid = NULL;
T->Rkid = NULL;
}
int add(BiTree T, int data){
if(T->elem == -1){
T->elem = data;
return 1;
}
if(data < T->elem){
if(T->Lkid == NULL){
BiTree tmp;
tmp = (BiNode*)malloc(sizeof(BiNode));
tmp->elem = data;
tmp->Lkid = NULL;
tmp->Rkid = NULL;
T->Lkid = tmp;
return 2;
}
else{
add(T->Lkid,data);
}
}
if(data > T->elem){
if(T->Rkid == NULL){
BiTree tmp;
tmp = (BiNode*)malloc(sizeof(BiNode));
tmp->elem = data;
tmp->Lkid = NULL;
tmp->Rkid = NULL;
T->Rkid = tmp;
return 2;
}
else{
add(T->Rkid,data);
}
}
}
int midtraverse(BiTree T) {
if (T != NULL) {
midtraverse(T->Lkid);
printf(" %d", T->elem);
midtraverse(T->Rkid);
return 1;
}
else {
return -1;
}
}
int indentateBiTree(BiTree T, int deep) {
if (T != NULL) {
indentateBiTree(T->Lkid,deep+1);
for(int i=0;i<=deep;i++){
printf(" ");
}
printf("%d\n", T->elem);
indentateBiTree(T->Rkid,deep+1);
return 1;
}
else {
return -1;
}
}
int main(void) {
BiTree T;
T = (BiNode*)malloc(sizeof(BiNode));
initializeBiTree(T);
T->elem = -1;
T->Lkid = NULL;
T->Rkid = NULL;
while(1){
int data;
scanf("%d",&data);
if(data == 0){
getchar();
getchar();
break;
}
getchar();
add(T,data);
}
indentateBiTree(T,0);
midtraverse(T);
}