Trouvez une certaine valeur
La recherche commence à partir du nœud racine. Si l'arborescence est vide, NULL est renvoyé.
Si l'arborescence de recherche n'est pas vide, la valeur de la clé du nœud racine est comparée à X et traitée différemment:
- Si X est inférieur à la valeur de clé du nœud racine, continuez simplement à rechercher dans le sous-arbre de gauche
- Si X est supérieur à la valeur de clé du nœud racine, continuez simplement à rechercher dans le sous-arbre de droite
- Si les deux sont égaux, la recherche est terminée et le pointeur vers ce nœud est renvoyé
//定义二叉树
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;
}
Trouvez le maximum
L'élément le plus grand doit être au noeud final de la branche la plus à droite de l'arborescence
Position FindMax(BinTree bst)
{
if(bst)
while(bst->right)
bst=bst->right;
return bst;
}
Trouvez la plus petite valeur
Le plus petit élément doit être au nœud final de la branche la plus à gauche de l'arbre
Position FindMin(BinTree bst)
{
if(bst)
while(bst->left)
bst=bst->left;
return bst;
}