如下图所示:

//这段代码是实现查找最大值和最小值的代码
/*思路:我们可以从root节点开始:
一直沿着左节点往下找,直到子节点等于NULL为止,这样就可以找到最小值了;
一直沿着右节点往下找,直到子节点等于NULL为止,这样就可以找到最大值了。
*/
//递归的方式
template<class T>
Node<T>* BST<T>::findMin(Node<T>* t) const {
if(NULL==t){
return NULL;
} else if(NULL==t->left){
return t;
} else{
return findMin(t->left);
}
}
//递归的方式
template<class T>
Node<T>* BST<T>::findMax(Node<T>* t) const {
if(NULL == t){
return NULL;
} else if(NULL == t->right){
return t;
} else {
return findMax(t->right);
}
}
//循环方式
template<class T>
Node<T>* BST<T>::findMin_loop(Node<T>* t) const {
if(NULL==t) {
return NULL;
}
while(t->left) {
t=t->left;
}
return t;
}
//循环方式
template<class T>
Node<T>* BST<T>::findMax_loop(Node<T>* t) const {
if(NULL==t) {
return NULL;
}
while(t->right) {
t=t->right;
}
return t;
}
//查找最小值,并返回最小值
template<class T>
const T& BST<T>::findMin() const {
Node<T>* p=findMin(root);
return p->data;
}
//查找最大值,并返回最大值
template<class T>
const T& BST<T>::findMax() const {
Node<T>* p=findMax(root);
return p->data;
}