Encuentra un cierto valor
La búsqueda comienza desde el nodo raíz. Si el árbol está vacío, se devuelve NULL.
Si el árbol de búsqueda no está vacío, el valor de la clave del nodo raíz se compara con X y se procesa de manera diferente:
- Si X es menor que el valor clave del nodo raíz, simplemente continúe buscando en el subárbol izquierdo
- Si X es mayor que el valor clave del nodo raíz, simplemente continúe buscando en el subárbol derecho
- Si los dos son iguales, la búsqueda se completa y se devuelve el puntero a este nodo
//定义二叉树
typedef struct TreeNode *BinTree;
typedef BinTree Position;
typedef int ElementType;
struct TreeNode
{
ElementType data;
BinTree left;
BinTree right;
};
Position Find(ElementType x,BinTree bst)
{
while(bst)
{
if(x>bst->data)
bst=bst->right;
else if(x<bst->data)
bst=bst->left;
else
return bst;
}
return NULL;
}
Encuentra el máximo
El elemento más grande debe estar en el nodo final de la rama más a la derecha del árbol.
Position FindMax(BinTree bst)
{
if(bst)
while(bst->right)
bst=bst->right;
return bst;
}
Encuentra el valor más pequeño
El elemento más pequeño debe estar en el nodo final de la rama más a la izquierda del árbol.
Position FindMin(BinTree bst)
{
if(bst)
while(bst->left)
bst=bst->left;
return bst;
}