@@ -24,8 +24,10 @@ sub insert(t : BST&; new_value : int) {
24
24
side : char;
25
25
if (new_value < curr{value})
26
26
side = left;
27
- else
27
+ else if (new_value > curr{value})
28
28
side = right;
29
+ else
30
+ break;
29
31
side_child : [Node] = [n for n over t{tree}<curr> when (n{child}|side|)];
30
32
if (side_child == []) {
31
33
new : Node = Node{value=new_value};
@@ -39,8 +41,6 @@ sub insert(t : BST&; new_value : int) {
39
41
}
40
42
}
41
43
42
-
43
-
44
44
sub print_inorder(t : BST&) {
45
45
stack : [Node] = [];
46
46
top : int = -1;
@@ -113,20 +113,30 @@ sub maximum(t : BST&) : (int, int) {
113
113
}
114
114
115
115
t1 : BST;
116
+ s : string;
117
+
118
+ println "Integer value to be inserted:";
119
+ read s;
120
+
121
+ while (s != "") {
122
+ insert(t1, s@int);
123
+
124
+ println "inorder traversal: ";
125
+ print_inorder(t1);
116
126
117
- for n over [0, -10, 6, -20, 5]
118
- insert (t1, n );
127
+ println "breadth first traversal: ";
128
+ print_levels (t1);
119
129
120
- println "inorder traversal: ";
121
- print_inorder(t1);
130
+ min, max : (int, int) = minimum(t1), maximum(t1);
122
131
123
- println "breadth first traversal : ";
124
- print_levels(t1) ;
132
+ print "min : " + min\0\@string ;
133
+ println " (level " + min\1\@string + ")" ;
125
134
126
- min, max : (int, int) = minimum(t1), maximum(t1);
135
+ print "max: " + max\0\@string;
136
+ println " (level " + max\1\@string + ")";
127
137
128
- print "min: " + min\0\@string;
129
- println " (level " + min\1\@string + ")";
138
+ println "";
130
139
131
- print "max: " + max\0\@string;
132
- println " (level " + max\1\@string + ")";
140
+ println "Integer value to be inserted:";
141
+ read s;
142
+ }
0 commit comments