@@ -27,6 +27,10 @@ func main() {
27
27
fmt .Println ("Size: " , tree .Size ())
28
28
fmt .Println ("Show: " )
29
29
tree .Show ()
30
+ fmt .Println ("Min element: " )
31
+ tree .FindMin ()
32
+ fmt .Println ("Max element: " )
33
+ tree .FindMax ()
30
34
}
31
35
32
36
// Node is a representation of a single node in tree. (recursive ADT)
@@ -49,7 +53,7 @@ Binary Search Tree ADT Operations
49
53
* + Search(k): поиск значения элемента k в структуре, есть он или нет.
50
54
* FindMax(): поиск максимального значения.
51
55
* FindMin(): поиск минимального значения.
52
- * Show & Size(): печать дерева и размер.
56
+ * + Show & Size(): печать дерева и размер.
53
57
*/
54
58
55
59
// New - Construtor BST
@@ -117,15 +121,43 @@ func searchElement(root *Node, value int) bool {
117
121
118
122
// Show the tree (Print the tree in-order)
119
123
func (tree * Bst ) Show () {
120
- showInOrder (tree .root )
124
+ printNode (tree .root )
121
125
}
122
126
123
127
// Print the tree in-order
124
128
// Traverse the left sub-tree, root, right sub-tree
125
- func showInOrder (root * Node ) {
129
+ func printNode (root * Node ) {
126
130
if root != nil {
127
- showInOrder (root .left )
131
+ printNode (root .left )
128
132
fmt .Println (root .key )
129
- showInOrder (root .right )
133
+ printNode (root .right )
134
+ }
135
+ }
136
+
137
+ // FindMin - print min element tree
138
+ func (tree * Bst ) FindMin () {
139
+ minValue (tree .root )
140
+ }
141
+
142
+ func minValue (root * Node ) {
143
+ if root != nil {
144
+ if root .left == nil {
145
+ fmt .Println (root .key )
146
+ }
147
+ minValue (root .left )
148
+ }
149
+ }
150
+
151
+ // FindMax - print max element tree
152
+ func (tree * Bst ) FindMax () {
153
+ maxValue (tree .root )
154
+ }
155
+
156
+ func maxValue (root * Node ) {
157
+ if root != nil {
158
+ if root .right == nil {
159
+ fmt .Println (root .key )
160
+ }
161
+ maxValue (root .right )
130
162
}
131
163
}
0 commit comments