Descripción del problema:
Descripción del código:
1 #include <cstdio> 2 #include <stdlib.h> 3 #include < string .h> 4 #include <queue> 5 #define MAXN 256 6 usando el espacio de nombres std; 7 Char s [MAXN + 10 ]; 8 typedef struct Node 9 { 10 int h_v; 11 int v; 12 struct Node * left; 13 struct Node * right; 14 } nodo, * pt; 15 16 pt Newnode () // Crear un nuevo nodo 17 { 18 pt p = (pt) malloc ( sizeof (node)); 19 p-> h_v = 0 ; 20 p-> left = p-> right = NULL; 21 return p; 22 } 23 24 pt root = Newnode (); 25 26 void addnode ( int v, char * s) 27 { 28 pt p = root; 29 int n = strlen (s); 30 para ( int i = 0 ; i <n; i ++ ) 31 { 32 if (* (s + i) == ' L ' ) 33 { 34 if (p-> left == NULL) 35 { 36 p-> left = Newnode (); 37 } 38 p = p-> izquierda; 39 } 40 más si (* (s + i) == ' R ' ) 41 { 42 si(p-> right == NULL) 43 { 44 p-> right = Newnode (); 45 } 46 p = p-> right; 47 } 48 } 49 if (p-> h_v == 1 ) 50 { 51 printf ( "El valor da error varias veces \ n " ); 52 retorno ; 53 } 54 p-> v = v; 55 p-> h_v = 1 ; 56 } 57 58 nulo Read_input () 59 { 60 while (scanf ( " % s " , & s) == 1 ) 61 { 62 if (strcmp (s, " () " ) == 0 ) break ; 63 int v; 64 sscanf (s + 1 , " % d " , & v); 65 addnode (v, strchr (s, ' , ' ) + 1 ); 66 } 67 } 68 69 vacío BFS (pt raíz) 70 { 71 cola <pt> q; 72 cola < int > ans; 73 q.push (raíz); 74 pt p; 75 while (! Q.empty ()) 76 { 77 p = q.front (); 78 q.pop (); 79 if (! p-> h_v) 80 { 81 printf ( " Error de valor nulo \ n " ); // De acuerdo con los requisitos de la pregunta, si hay un nodo que no ha sido asignado, se informará un error salida 82 de retorno; 83 } 84 ans.push (p-> v); 85 if (p-> left) q.push (p-> left); 86 if (p-> right) q.push (p-> right); 87 } 88 while (! Ans.empty ()) 89 { 90 printf ( " % d \ t " , ans.front ()); 91 ans.pop (); 92 } 93 } 94 95 liberación nula (raíz del pt) // Memoria dinámica libre para evitar pérdidas de memoria 96 { 97 if (! root) return ; 98 if (root-> left) release (root-> left); 99 if (root-> right) release (root-> right); 100 } 101 102 int main () 103 { 104 Read_input (); 105 BFS (raíz); 106 liberación (raíz); 107 devuelve 0 ; 108 }
Resultado de la operación: