//Tree.cp Tree Sort #include "tree.h" void doTreeSort(void) { register int x; for (x = 0; x < 50; x++) { insert(numbers[x], &topNode); } printTree(topNode); freeTree(&topNode); } void insert(int num, node **currentNode) { if (*currentNode == null) //we've found an empty node... make a new one { *currentNode = (node *) malloc(sizeof(node *)); (*currentNode)->left = null; (*currentNode)->right = null; (*currentNode)->val = num; return; } else { if (num <= (*currentNode)->val) { insert(num, &(*currentNode)->left); return; } if (num > (*currentNode)->val) { insert(num, &(*currentNode)->right); return; } else //we should never get here... but if we do... { cout << "Some random error has occured" << endl; freeTree(&topNode); myExit(0); } } } void printTree(node *currentNode) { if (currentNode->left != null) { printTree(currentNode->left); } cout << currentNode->val << endl; if (currentNode->right != null) { printTree(currentNode->right); } return; } void freeTree(node **currentNode) { if ((*currentNode)->left != null) { freeTree(&(*currentNode)->left); } if ((*currentNode)->right != null) { freeTree(&(*currentNode)->right); } free(*currentNode); return; } void memError(void) { cout << "Malloc failed. Cleaning up and going home." << endl; freeTree(&topNode); }