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 New node Write a function that creates a binary tree node
Insert left Write a function that inserts a node as the left-child of another node
Insert right Write a function that inserts a node as the right-child of another node
Delete Write a function that deletes an entire binary tree
Is leaf Write a function that checks if a node is a leaf
Is root Write a function that checks if a given node is a root
Pre-order traversal Write a function that goes through a binary tree using pre-order traversal
In-order traversal Write a function that goes through a binary tree using in-order traversal
Post-order traversal Write a function that goes through a binary tree using post-order traversal
Height Write a function that measures the height of a binary tree
Depth Write a function that measures the depth of a node in a binary tree
Size Write a function that measures the size of a binary tree
Leaves Write a function that counts the leaves in a binary tree
Nodes Write a function that counts the nodes with at least 1 child in a binary tree
Balance factor Write a function that measures the balance factor of a binary tree
Is full Write a function that checks if a binary tree is full
Is perfect Write a function that checks if a binary tree is perfect
Sibling Write a function that finds the sibling of a node
Uncle Write a function that finds the uncle of a node
Lowest common ancestor Write a function that finds the lowest common ancestor of two nodes
Level-order traversal Write a function that goes through a binary tree using level-order traversal
Is complete Write a function that checks if a binary tree is complete
Rotate left Write a function that performs a left-rotation on a binary tree
Rotate right Write a function that performs a right-rotation on a binary tree
Is BST Write a function that checks if a binary tree is a valid Binary Search Tree
BST - Insert Write a function that inserts a value in a Binary Search Tree
BST - Array to BST Write a function that builds a Binary Search Tree from an array
BST - Search Write a function that searches for a value in a Binary Search Tree
BST - Remove Write a function that removes a node from a Binary Search Tree
Big O #BST What are the average time complexities of those operations on a Binary Search Tree (one answer per line):
Is AVL Write a function that checks if a binary tree is a valid AVL Tree
AVL - Insert Write a function that inserts a value in an AVL Tree
AVL - Array to AVL Write a function that builds an AVL tree from an array
AVL - Remove Write a function that removes a node from an AVL tree
AVL - From sorted array Write a function that builds an AVL tree from an array
Big O #AVL Tree What are the average time complexities of those operations on an AVL Tree (one answer per line):