1. Write a routine to list out the nodes of a binary tree in level-order. List the root, then nodes at depth 1, followed by nodes at depth 2, and so on. You must do this in linear time. Prove your time bound.
2. * a. Write a routine to perform insertion into a B-tree.
* b. Write a routine to perform deletion from a B-tree. When an item is deleted, is it necessary to update information in the internal nodes?
* c. Modify your insertion routine so that if an attempt is made to add into a node that already has M entries, a search is performed for a sibling with less than M children before the node is split.