Swust OJ1011: Implementación y búsqueda del árbol de ordenamiento binario

Conocimiento:

 

 

 

#include <iostream>
 usando el  espacio de nombres std;
 int flag; 
typedef struct node 
{ 
    int data;
     struct node * lchild, * rchild ; 
} Tree; 

void CreateHead (Tree * & root) 
{ 
    root = new Tree; 
    cin >> root-> datos; 
    la raíz -> = directorio raíz lchild> rchild = NULL; 
} // entrada de valor de la raíz 

vacío CreateTree (el árbol de raíz y *, int k) // elementos de datos K 
 // crear un árbol de tipo binario 
{
     SI(La raíz == NULL) // Cuando el nodo raíz está vacía 
    { 
        la raíz = new new árbol; 
        directorio root-> Datos = K; 
        la raíz -> = directorio lchild Raíz> rchild = NULL;
         retorno ; 
     } 
else      SI (directorio Raíz> Datos > k) // El elemento de datos de entrada es más pequeño que el nodo raíz 
     { 
             CreateTree ( root- > lchild, k); // Almacene en el subárbol izquierdo 
     }
 sino     if (root-> data <k) // El elemento de datos de entrada es más que root Nodo grande 
        { 
                CreateTree (root- > rchild, k); // Almacenar en el subárbol derecho 
        } 
             
}

void Searchkey (Tree * root, int key, int count)
 // key significa el elemento que se va a encontrar, count significa count 
{
     if (root == NULL) // cuando el nodo está vacío, return 
    {
         return ; 
    } 
    if (key = = raíz-> datos) // Cuando el valor del nodo raíz es igual al valor que se encuentra 
    { 
        cout << count; 
        flag = 1 ;
         return ; // Si se encuentra, el conteo de salida multiplicado
                  // La bandera se le asigna un valor de 1 
    } 
     sino  if (key < root-> data)
     // Cuando la clave es menor que el nodo raíz, vaya al subárbol izquierdo
    { 
        Searchkey (root- > lchild , key, count + 1 ); 
    } 
    else  if (key> root-> data)
     // Cuando la clave es mayor que el nodo raíz, vaya al subárbol derecho 
    { 
        Searchkey (root- > rchild , key, count + 1 ); 
    } 
 } 
int main () 
{ 
    int n; 
    cin >> n; // Número de elementos 
    int i;
     int count = 1 ; 
    Tree * root; 
    CreateHead (root); 
    int k;
     for (i = 2 ; i < = n; i ++)// Debido a que se ha ingresado un elemento en CreateHead 
    {     
        cin >> k; 
        CreateTree (root, k); 
     } // Crea una 
     bandera de árbol de ordenación binaria = 0 ; // Inicializa a 0 
     clave int ; 
     cin >> clave; 
     Searchkey ( root, key, count); 
     if (flag == 0 ) 
            cout << " -1 " ;
      return  0 ; 
}

 

 

 

Supongo que te gusta

Origin www.cnblogs.com/army613bts/p/12699488.html
Recomendado
Clasificación