Cree un árbol mediante programación.
Prólogo: El primer carácter de ABECDFGHIJ es a, lo que significa que es la raíz del árbol. Luego ubique A en la posición de orden medio: EBCDAFHIGJ. A divide el orden medio en dos subcadenas: EBCD y FHIGJ, que son todos nodos del subárbol izquierdo y derecho de A, respectivamente.
Prólogo: El segundo carácter de ABECDFGHIJ es B. De manera similar, divide la subcadena EBCD en dos subcadenas, E y CD, que son las subcadenas izquierda y derecha con B como raíz.
Prólogo: El tercer carácter de ABECDFGHIJ es e, que ya es un nodo hoja. Porque e es un personaje. Izquierda y derecha son cadenas vacías.
Prólogo: El cuarto carácter de ABECDFGHIJ es C. De manera similar, divide la subcadena CD en una cadena vacía izquierda y el carácter d. La cadena vacía significa que C no tiene ningún nodo secundario izquierdo.
Prólogo: El quinto carácter de ABECDFGHIJ es d, que ya es un nodo hoja. Porque d es un personaje.
. . .
De manera similar, el subárbol derecho de A también se puede reconstruir.
-Implementación recursiva, ¡hazlo tú mismo!
Ejemplo:
void createbtreeFromPreM(NODE * * root, char* p, char* m, int len)
{
int llen, rlen//llen+rlen+1=len
if (p)
* root = create node(* p); //Asigna dinámicamente memoria de nodo e inicializa
int pos = 0; //La posición del primer carácter en el preámbulo en la secuencia intermedia, la base es 0
while(*p!=*(m+pos) )
pos++;
if(pos-1 & gt; 0)
{
llen = pos
createbtreefrompem(&(*root)->left,p+1,m,llen);
}
if(len-pos-1>0 )
{
rlen = len-pos-1;
createbtreefrompem(&(*root)->right,p+llen+ 1, m+llen +1, rlen);
}
}