Skip to content

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

binary_trees

Binary tree is a tree data structure in which each node has at most two children, referred to as the left child and the right child. This was a group project though i worked solo, we learnt about the details, advantages, and disadvantages of using trees as data structures. We learned about how to qualify trees as well as how to traverse them. Recursive algorithms are commonly used to traverse, search, insert, delete, and perform various other operations on binary trees.

  • In-order Traversal
  • Pre-order Traversal
  • Post-order Traversal In this project, i implemented binary, binary search, AVL, and Max Binary Heap trees.

Tests ✔️

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

Helper File 🙌

binary_tree_print.c: C function that prints binary trees in a pretty way.

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
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);

Author

Chiamaka Emeti

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages