1. Write code for the query operations (find/search, maximum, minimum, successor and predecessor in a binary search tree).
2. Write code for inserting nodes into and deleting nodes from binary search trees.
3. Write code for rotations at nodes in binary search trees.
4. Write routines for balancing binary search trees using rotations. Do this at every insertion and deletion operation that results in an imbalanced tree. This is an AVL tree.
5. Implement insertion and deletion in Red-Black trees and 2-3-4 trees.
6. Write procedures to compute the height of a node, depth of a node and size of a subtree dynamically.
7. Write procedures for Binary search and linear search in an array. Also write a routine for finding a maximum/minimum element in an unsorted array without resorting to sorting.
8. Write code to implement bubble sort, insertion sort, merge sort, selection sort and quick sort.