C - Binary trees

Tests ✔️

  • tests: Folder of test files for all tasks. Provided by ALX.

Helper File 🙌

Header File 📁

  • binary_trees.h: Header file containing definitions and prototypes for all types and functions written for the project.

Data Structures

struct binary_tree_s
{
    int n;
    struct binary_tree_s *parent;
    struct binary_tree_s *left;
    struct binary_tree_s *right;
};
typedef struct binary_tree_s binary_tree_t;
typedef struct binary_tree_s bst_t;
typedef struct binary_tree_s avl_t;
typedef struct binary_tree_s heap_t;

Function Prototypes

File Prototype
binary_tree_print.c void binary_tree_print(const binary_tree_t *tree)
0-binary_tree_node.c binary_tree_t *binary_tree_node(binary_tree_t *parent, int value);
1-binary_tree_insert_left.c binary_tree_t *binary_tree_insert_left(binary_tree_t *parent, int value);
2-binary_tree_insert_right.c binary_tree_t *binary_tree_insert_right(binary_tree_t *parent, int value);
3-binary_tree_delete.c void binary_tree_delete(binary_tree_t *tree);
4-binary_tree_is_leaf.c int binary_tree_is_leaf(const binary_tree_t *node);
5-binary_tree_is_root.c int binary_tree_is_root(const binary_tree_t *node);
6-binary_tree_preorder.c void binary_tree_preorder(const binary_tree_t *tree, void (*func)(int));
7-binary_tree_inorder.c void binary_tree_inorder(const binary_tree_t *tree, void (*func)(int));
8-binary_tree_postorder.c void binary_tree_postorder(const binary_tree_t *tree, void (*func)(int));
9-binary_tree_height.c size_t binary_tree_height(const binary_tree_t *tree);
10-binary_tree_depth.c size_t binary_tree_depth(const binary_tree_t *tree);
11-binary_tree_size.c size_t binary_tree_size(const binary_tree_t *tree);
12-binary_tree_leaves.c size_t binary_tree_leaves(const binary_tree_t *tree);
13-binary_tree_nodes.c size_t binary_tree_nodes(const binary_tree_t *tree);
14-binary_tree_balance.c int binary_tree_balance(const binary_tree_t *tree);
15-binary_tree_is_full.c int binary_tree_is_full(const binary_tree_t *tree);
16-binary_tree_is_perfect.c int binary_tree_is_perfect(const binary_tree_t *tree);
17-binary_tree_sibling.c binary_tree_t *binary_tree_sibling(binary_tree_t *node);
18-binary_tree_uncle.c binary_tree_t *binary_tree_uncle(binary_tree_t *node);
100-binary_trees_ancestor.c binary_tree_t *binary_trees_ancestor(const binary_tree_t *first, const binary_tree_t *second);
101-binary_tree_levelorder.c void binary_tree_levelorder(const binary_tree_t *tree, void (*func)(int));
102-binary_tree_is_complete.c int binary_tree_is_complete(const binary_tree_t *tree);
103-binary_tree_rotate_left.c binary_tree_t *binary_tree_rotate_left(binary_tree_t *tree);
104-binary_tree_rotate_right.c binary_tree_t *binary_tree_rotate_right(binary_tree_t *tree);
110-binary_tree_is_bst.c int binary_tree_is_bst(const binary_tree_t *tree);
111-bst_insert.c bst_t *bst_insert(bst_t **tree, int value);
112-array_to_bst.c bst_t *array_to_bst(int *array, size_t size);
113-bst_search.c bst_t *bst_search(const bst_t *tree, int value);
114-bst_remove.c bst_t *bst_remove(bst_t *root, int value);
120-binary_tree_is_avl.c int binary_tree_is_avl(const binary_tree_t *tree);
121-avl_insert.c avl_t *avl_insert(avl_t **tree, int value);
122-array_to_avl.c avl_t *array_to_avl(int *array, size_t size);