Top.Mail.Ru
Ответы

Программирование ЗАДАЧА НА ДЕРЕВЬЯ (СИ)!

Постройте дерево бинарного поиска и выведите его элементы в порядке убывания значений

НАПИСАТЬ НА СИ
если можно с объяснением пожалуйста

По дате
По Рейтингу
Аватар пользователя
Просветленный

#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;
}