Búsqueda de árbol de búsqueda binaria

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

Supongo que te gusta

Origin blog.csdn.net/m0_54621932/article/details/114140353
Recomendado
Clasificación