Si recorrem un BinTree<string> com el següent
:root: |-- left '-- right
en inordre, obtenim la seqüència left, :root:, right. Si concatenem aquests strings el resultat seria: left:root:right.
Implementa la funció tree_join, que fa aquesta operació en un BinTree<string> qualsevol:
/** * @brief Concatena els valors d'un arbre binari de `string`s en inordre * * @param t Un arbre binari de `string`s * @returns El resultat de la concatenació */ string tree_join(BinTree<string> t);
Observació
Els fitxers públics (icona del gatet) contenen:
main.cc | el programa principal, amb la entrada/sortida feta |
bintree.hh | la classe BinTree<T> |
bintree-io.hh | l’entrada/sortida de BinTree<T> |
bintree-inline.hh | l’entrada/sortida "inline" de BinTree<T> |
Makefile | per compilar amb make còmodament |
.vscode | carpeta per compilar i debuggar amb VSCode |
Cal implementar tree_join en un fitxer .cc nou, compilar, i finalment enviar només el fitxer amb la funció.
Entrada
L’entrada comença amb "visual" o "inline" per indicar el format dels arbres d’entrada. Després ve una seqüència d’arbres en el format indicat. (D’això s’encarrega el programa principal).
Sortida
La sortida són els strings resultants de cridar la funció tree_join, un resultat per línia. (D’això també s’encarrega el programa principal.)
Input
visual rpe |-- ca '-- diem Laura! |-- Felicidades, '-- # # c |-- a | |-- " | '-- b '-- "
Output
carpediem Felicidades,Laura! "abc"
Input
inline ooo(fck(sog(gij,),fbc(tei,)),) sbe(ik(qri(ol,),whs(kx,)),) vvk(jp(dkv,idi),owm(,tep)) kmp(vg(ol,eem),ld(jy,al)) dn(pi(mm,ny),rp(,vf)) lgn(,qa(ut,rph)) sw(pw(ml,bf),ai(dtf,wsk)) vi(jou(jnp,dqt),nis(yxo,kr)) vc(duv(nrc,de),lgy(vid,ls)) jla(vuh(tt,bo),ujw(nvd(iqy,),))
Output
gijsogfckteifbcooo olqriikkxwhssbe dkvjpidivvkowmtep olvgeemkmpjyldal mmpinydnrpvf lgnutqarph mlpwbfswdtfaiwsk jnpjoudqtviyxoniskr nrcduvdevcvidlgyls ttvuhbojlaiqynvdujw