Программирование ЗАДАЧА НА ДЕРЕВЬЯ (СИ)!
Постройте дерево бинарного поиска и выведите его элементы в порядке убывания значений
НАПИСАТЬ НА СИ
если можно с объяснением пожалуйста
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int key;
struct Node* left;
struct Node* right;
} Node;
Node* insert(Node* tree, int key) {
if (!tree) {
tree = malloc(sizeof(Node));
tree->key = key;
tree->left = tree->right = NULL;
return tree;
}
if (key < tree->key)
tree->left = insert(tree->left, key);
else if (key > tree->key)
tree->right = insert(tree->right, key);
return tree;
}
void destruct(Node* tree) {
if (!tree)
return;
destruct(tree->left);
destruct(tree->right);
free(tree);
}
void descendingPrint(const Node* tree) {
if (!tree)
return;
descendingPrint(tree->right);
printf("%d ", tree->key);
descendingPrint(tree->left);
}
int main(void) {
Node* tree = NULL;
int arr[] = { 5, 4, 6, 3, 0, 7, 2, 8, 1, 9 };
for (size_t i = 0; i < sizeof(arr) / sizeof(*arr); ++i)
tree = insert(tree, arr[i]);
descendingPrint(tree);
destruct(tree);
tree = NULL;
return 0;
}