a3
This commit is contained in:
parent
abf624ddb6
commit
52e154db28
64
a3/binary_search_tree.c
Normal file
64
a3/binary_search_tree.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "binary_search_tree.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
node_t *create_node(int data) ;
|
||||||
|
|
||||||
|
node_t *create_node(int data) {
|
||||||
|
node_t *new_node = (node_t *)malloc(sizeof(node_t));
|
||||||
|
|
||||||
|
new_node->data = data;
|
||||||
|
new_node->left = NULL;
|
||||||
|
new_node->right = NULL;
|
||||||
|
return new_node;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
node_t *build_tree(int *tree_data, size_t tree_data_len) {
|
||||||
|
|
||||||
|
|
||||||
|
node_t *root = create_node(tree_data[0]);
|
||||||
|
|
||||||
|
size_t i = 1;
|
||||||
|
while (i < tree_data_len) {
|
||||||
|
node_t *new_node = create_node(tree_data[i]);
|
||||||
|
node_t *current = root;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (new_node->data <= current->data) { //porovnanie novy uzol a aktualny
|
||||||
|
if (current->left == NULL) {
|
||||||
|
current->left = new_node;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
current = current->left;
|
||||||
|
} else {
|
||||||
|
if (current->right == NULL) {
|
||||||
|
current->right = new_node;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
current = current->right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Function to free the memory allocated for the binary search tree
|
||||||
|
void free_tree(node_t *tree) {
|
||||||
|
|
||||||
|
free(tree);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to return sorted data from the binary search tree
|
||||||
|
int *sorted_data(node_t *tree) {
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user