******** fig4.22 ********** tree_ptr insert( element_type x, SEARCH_TREE T ) { /*1*/ if( T == NULL ) { /* Create and return a one-node tree */ /*2*/ T = (SEARCH_TREE) malloc ( sizeof (struct tree_node) ); /*3*/ if( T == NULL ) /*4*/ fatal_error("Out of space!!!"); else { /*5*/ T->element = x; /*6*/ T->left = T->right = NULL; } } else /*7*/ if( x < T->element ) /*8*/ T->left = insert( x, T->left ); else /*9*/ if( x > T->element ) /*10*/ T->right = insert( x, T->right ); /* else x is in the tree already. We'll do nothing */ /*11*/ return T; /* Don't forget this line!! */ }