Red de conocimiento informático - Conocimiento informático - (Ir al programa C++)

(Ir al programa C++)

Encuentra el patrón:

Preámbulo: El primer carácter de ABECDFGHIJ es A, lo que significa que es la raíz del árbol. Luego encuentre la posición de A en el orden medio: EBCDAFHIGJ. A divide el orden en dos subcadenas: EBCD y FHIGJ son todos nodos del subárbol izquierdo y del subárbol derecho de A respectivamente.

Preámbulo: El segundo carácter de ABECDFGHIJ es B. Asimismo, divide la subcadena EBCD en dos subcadenas E y CD, que son los subárboles izquierdo y derecho con raíces en B respectivamente.

Prioridad: El tercer carácter de ABECDFGHIJ es E, que ya es un nodo hoja. Porque E es un personaje. Tanto el lado izquierdo como el derecho son cadenas vacías.

Preámbulo: El cuarto carácter de ABECDFGHIJ es C. Asimismo, divide la subcadena CD en la cadena vacía izquierda y el carácter D.

Preclasificación: El quinto carácter de ABECDFGHIJ es D, que ya es un nodo hoja. Porque D es un personaje.

.

De manera similar, se puede reconstruir el subárbol derecho de A.

--Se puede implementar de forma recursiva, ¡hágalo usted mismo!

Ejemplo:

void createbtreeFromPreM(NODE** root,char* p,char* m,int len)

{

int llen,rlen;//llen+rlen+1=len

if(p)

*root=createnode(*p);//Asignar dinámicamente memoria de nodo e inicializar

int pos=0;//posición del primer carácter en preorden en base de orden medio 0

while(*p!=*(m+pos))

pos++;

if( pos-1>0)

{

llen=pos;

createbtreeFromPreM(&(*root) ->izquierda,p+1,m,llen);

}

if(len-pos-1>0)

{

rlen=len-pos-1;

createbtreeFromPreM(&(*root)->right,p+llen+1,m+llen+1,rlen); p>

}

}