Recherche dans l'arborescence de recherche binaire

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;
 }

Je suppose que tu aimes

Origine blog.csdn.net/m0_54621932/article/details/114140353
conseillé
Classement