Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/brendon45/binary_trees

This is a vital repository for the Binary trees project from ALX
https://github.com/brendon45/binary_trees

Last synced: 4 days ago
JSON representation

This is a vital repository for the Binary trees project from ALX

Awesome Lists containing this project

README

        

<<<<<<< HEAD
# 0x1D. C - Binary trees

## C
## Group project
## Algorithm
## Data structure

## Resources

## Read or watch:

- Binary tree (note the first line: Not to be confused with B-tree.)
- Data Structure and Algorithms - Tree
- Tree Traversal
- Binary Search Tree
- Data structures: Binary Tree

## Learning Objectives
At the end of this project, you are expected to be able to explain to anyone, without the help of Google:

## General

- 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:

## General

- 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
- All your files should end with a new line
- A README.md file, at the root of the folder of the project, is mandatory
- Your code should use the Betty style. It will be checked using betty-style.pl and betty-doc.pl
- You are not allowed to use global variables
- No more than 5 functions per file
- You are allowed to use the standard library
- In the following examples, the main.c files are shown as examples. You can use them to test your functions, but you don’t have to push them to your repo (if you do we won’t take them into account). We will use our own main.c files at compilation. Our main.c files might be different from the one shown in the examples
- The prototypes of all your functions should be included in your header file called binary_trees.h
- Don’t forget to push your header file
- All your header files should be include guarded

## More Info

# Data structures
Please use the following data structures and types for binary trees. Don’t forget to include them in your header file.

# Basic Binary Tree

/**
* struct binary_tree_s - Binary tree node
*
* @n: Integer stored in the node
* @parent: Pointer to the parent node
* @left: Pointer to the left child node
* @right: Pointer to the right child node
*/
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;

# Binary Search Tree
typedef struct binary_tree_s bst_t;

# AVL Tree

typedef struct binary_tree_s avl_t;

# Max Binary Heap

typedef struct binary_tree_s heap_t;

Note: For tasks 0 to 23 (included), you have to deal with simple binary trees. They are not BSTs, thus they don’t follow any kind of rule.

## Print function

To match the examples in the tasks, you are given this function

This function is used only for visualization purposes. You don’t have to push it to your repo. It may not be used during the correction
=======
# Binary Trees

Welcome to the Binary Trees project! This project aims to provide a comprehensive implementation and exploration of binary trees in various programming languages. Binary trees are fundamental data structures widely used in computer science and software development.

## Table of Contents
- [Introduction](#introduction)
- [Features](#features)
- [Contributors](#contributors)
- [Getting Started](#getting-started)
- [Usage](#usage)
- [License](#license)

## Introduction
Binary trees are hierarchical data structures composed of nodes, each containing a value and references to its left and right children (subtrees). They are extensively used in algorithms such as binary search trees, heaps, and expression trees.

This project provides implementations of binary trees in different programming languages, along with various operations and algorithms associated with them.

## Features
- Implementation of binary trees in multiple programming languages.
- Common operations such as insertion, deletion, traversal, and searching.
- Algorithms like tree traversal (inorder, preorder, postorder), height calculation, and more.
- Comprehensive test suites to ensure correctness and robustness.

## Contributors
- [Wayne R Masakure](https://github.com/WayneRu95)
- [Brendon Jeje](https://github.com/Brendon45)

## Getting Started
To get started with the Binary Trees project, follow these steps:

1. Clone the repository:
```bash
git clone https://github.com/your-username/binary-trees.git

Choose your preferred programming language directory.
Follow the language-specific instructions in the README of that directory to build and run the code.
Usage
The usage of the binary tree implementations may vary depending on the programming language you choose. Refer to the specific README files within each language directory for detailed usage instructions, examples, and API documentation.
>>>>>>> 9c955f3f2b3b2103817707d86585ab7e889bce04