#include using namespace std; const int N = 20; int maxint(int x, int y) { if(x < y) return y; else return x; } struct treenode; typedef treenode*tree; struct treenode { int item; tree left; tree right; }; tree mainroot = 0; void inorder(tree t) { #include"inorder.tex" } void preorder(tree t) { #include"preorder.tex" } void postorder(tree t) { #include"postorder.tex" } int hite(tree t) // height // empty tree has hite -1 { #include"hite.tex" } int numbr(tree t) // number of nodes of t { #include"numbr.tex" } void insrt(tree&t,int newitem) { if(t == 0) { t = new treenode(); t->item = newitem; } else if(newitem < t->item) insrt(t->left,newitem); else insrt(t->right,newitem); } void insertrandom(int n) { // inserts n random 2 digit numbers into the binary search tree srand(0); for(int i = 0; i < n; i++) { int m = 10+rand()%90; insrt(mainroot,m); cout << m << " "; } cout << endl; } void levl(tree t, int ell) { if(t) if(ell == 0) cout << t->item << " "; else { levl(t->left,ell-1); levl(t->right,ell-1); } } void levelorder(tree t) { for(int ell = 0; ell <= hite(t); ell++) levl(t,ell); } int main() { cout << "insert integers:" << endl; insertrandom(N); cout << "inorder:" << endl; inorder(mainroot); cout << endl; cout << "preorder:" << endl; preorder(mainroot); cout << endl; cout << "postorder:" << endl; postorder(mainroot); cout << endl; cout << "levelorder:" << endl; levelorder(mainroot); cout << endl; cout << "number of items = " << numbr(mainroot) << " "; cout << "height = " << hite(mainroot) << endl; return 1; }