SE250:lab-6:mgha023

From Marks Wiki
Jump to navigation Jump to search

minimum

Initially I had this :/*if (node == empty){ return ; } minimum( (*node)->left) ; return node;*/

but that wasn't really right... Then I had:

 Node* minimum( Node* node ) {
 	while (*node != empty){
 	node = &(*node)->left;
 	return node;
 	}
 return 0;
 }

maximum

Initially:

/*if (node == empty){
		return ;
	}
	//else return (*node)-> right;
	maximum( (*node)->right); */

Finally:

Node* maximum( Node* node ) {
		while (*node != empty){
		node = &(*node)->right;
		return node;
 	}
return 0;
}

lookup

Initially:

  • if (node == empty){

return; } else lookup((*node)->key, node);*/

Finally:

 Node* lookup( int key, Node* node ) {
 
 	if (*node != empty){
  	printf("%d\n", (*node)->key);
	lookup(&(*node)->left);
 	lookup(&(*node)->right);
       }
 	return 0;
 }

successor funtion:next_pre

Node* next_pre( Node* node ) {
	if ((*node)->right != empty){
	   return next_pre((*node)->right);
       } 
       return o;
}


At this point I found this website Link Binary Search Treehttp://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/binarySearchTree.htm that had some useful explanation that helped me get a better understanding of what was to be done.


prev_pre

Node* next_pre( Node* node ) {
	
	if ((*node)->right != empty){
		return next_pre((*node)->right);
	}
	return 0;
	
}