An open API service indexing awesome lists of open source software.

https://github.com/nihadamirov/holbertonschool-binary_trees

Binary tree data structure and algorithms project completed for Holberton School
https://github.com/nihadamirov/holbertonschool-binary_trees

binary-tree binary-tree-preorder binary-tree-search binary-tree-traversal c-data-structures-and-algorithms data-structures-and-algorithms

Last synced: over 1 year ago
JSON representation

Binary tree data structure and algorithms project completed for Holberton School

Awesome Lists containing this project

README

          

# Binary Trees

## Learning Objectives
- What is a binary tree
- What is the difference between a binary tree and a Binary Search Tree
- What is the possible gain in terms of time complexity compared to linked lists
- What are the depth, the height, the size of a binary tree
- What are the different traversal methods to go through a binary tree
- What is a complete, a full, a perfect, a balanced binary tree
## Requirements
- Allowed editors: `vi`, `vim`, `emacs`
- All your files will be compiled on Ubuntu 20.04 LTS using gcc, using the options `-Wall -Werror -Wextra -pedantic -std=gnu89`
- The prototypes of all your functions should be included in your header file called `binary_trees.h`
## Functions
- **binary_tree_node**, creates a binary tree node
- **binary_tree_insert_left**, function that inserts a node as the left-child of another node
- **binary_tree_insert_right**, function that inserts a node as the right-child of another node
- **binary_tree_delete**, function that deletes an entire binary tree
- **binary_tree_is_leaf**, function that checks if a node is a leaf
- **binary_tree_is_root**, function that checks if a given node is a root
- **binary_tree_preorder**, function that goes through a binary tree using pre-order traversal
- **binary_tree_inorder**, function that goes through a binary tree using in-order traversal
- **binary_tree_postorder**, function that goes through a binary tree using post-order traversal
- **binary_tree_height**, function that measures the height of a binary tree
- **binary_tree_depth**, function that measures the depth of a node in a binary tree
- **binary_tree_size**, function that measures the size of a binary tree
- **binary_tree_leaves**, function that counts the leaves in a binary tree
- **binary_tree_nodes**, function that counts the nodes with at least 1 child in a binary tree
- **binary_tree_balance**, function that measures the balance factor of a binary tree
- **binary_tree_is_full**, function that checks if a binary tree is full
- **binary_tree_is_perfect**, function that checks if a binary tree is perfect
- **binary_tree_sibling**, function that finds the sibling of a node
- **binary_tree_uncle**, function that finds the uncle of a node

---

## 👥 Team
👨‍💻 Nihad Amirov [nihadamirov](https://github.com/nihadamirov)

👨‍💻 Rafig Mammadov [rafigmammadov](https://github.com/rafigmammadov)