Nota de prueba de máquina 9 - Recorrido del árbol binario

El recorrido del árbol binario solo necesita dominar la plantilla. La construcción del árbol binario debe considerar el uso de punteros al pasar parámetros durante la implementación.

Ejemplo

Ingrese una secuencia de recorrido de preorden, construya un árbol binario y recorra en orden

#include <bits / stdc ++. h> 
#include < string >
 usando el  espacio de nombres std; 
typedef struct node 
{ 
    char data;
     struct node * lchild;
     struct node * rchild; 
} T; 
int i = 0 ; 

void createTree (T ** tree , cadena s) // Debido a que necesita modificar el puntero, use un puntero de segundo nivel 
{
     if (i> s.size () -1 )
         return ;
     if (s [i] == ' # ' ) {
         * árbol = NULL; 
         i ++ ; 
    } else { 
        ( * árbol) = nueva T;
    // (* árbol) = (T *) malloc (sizeof (T)); 
    (* árbol) -> datos = s [i ++ ]; 
    createTree ( & ((* tree) -> lchild), s); 
    createTree ( & ((* tree) -> rchild), s); 
    } 
} 
void inorderTraverse (T * t) 
{ 
    if (t) { 

      inorderTraverse (t -> lchild); 
      cout <<t-> datos << "  " ; 
      inorderTraverse (t ->rchild); 
    } 
} 
int main () 
{ 
    string str; 
    cin >> str; 
    T * árbol = NULL; 
    createTree ( & tree, str); 
    inorderTraverse (árbol); 
    devuelve  0 ; 
}

No hay código para eliminar el nodo, lo que provocará una pérdida de memoria. De hecho, el uso de referencias será mucho más intuitivo y puede considerarse como una revisión del uso de punteros.

Supongo que te gusta

Origin www.cnblogs.com/Sunqingyi/p/12682841.html
Recomendado
Clasificación