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.